Я обновил свой проект до richfaces 4.1.0 и JSF 2.0.Я неожиданно изменил зависимости maven, обновил web.xml ,face-config.xml, перенес из файлов * .jsp в файлы * .xhtml, обновил все заголовок, тело, форму до h: head, h: body, h: form,Однако у меня есть серьезные проблемы с макетом страницы и поведением a4j: ajax.Я думаю, что было бы лучше, если бы я просто перечислил проблемы:
Мой богатый: датируемый скин перестал работать.Я даже пытался удалить атрибуты columnClass и т. Д. Из тега, чтобы оставить его с синими обложками по умолчанию, но результат выглядит как простая HTML-таблица (без линий, без фона, без цветов).
тег a4j: axjax работает намного хуже, чем тег a4j: support.Для моего selectOneMenus я пробовал event = "change", но это не работает.Только после добавления valueChangedListener к тегам и попытки события = "valueChange" это сработало.
rich: элементы календаря не «кликабельны» - когда я перемещаю курсор над кнопкой, чтобы открыть календарь, он не меняется, а когда я нажимаю на кнопку, ничего не происходит.Мне также нужен a4j: ajax здесь, но я не могу его протестировать.
Хотя event = "valueChange" работал в selectOneMenu, мое изображение a4j: mediaOutput не перерисовывается.И диаграмма была причиной, по которой я переключился на JSF 2.0, потому что мне нужно было использовать механизм сессионных данных-помощников для загрузки изображений.Есть ли специальный механизм для рендеринга (или теперь «рендеринга» с помощью a4j: ajax) этого элемента, когда он использует session-data-helper для загрузки данных?
Вот сеть.Файлы xml и index.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID"
version="2.5">
<display-name>presentation graph</display-name>
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/data-helper.taglib.xml</param-value>
</context-param>
<context-param>
<param-name>javac.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
</web-app>
index.xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:sdh="http://richfaces.org/session-data-helper">
<h:head>
<title>Graph presentation</title>
<h:outputStylesheet name="style.css" library="css" />
</h:head>
<h:body>
<h:form id="form">
<div class="grid_2">
<rich:calendar value="#{formBean.date}"
id="date" popup="true" datePattern="yyyy/MM/dd"
showApplyButton="false" cellWidth="24px" cellHeight="22px" style="width:200px">
<a4j:ajax event="change" render="resultTable chart" execute="@this" listener="#{formBean.dateSelected}"/>
</rich:calendar>
</div>
<div class="grid_2">
<h:selectOneMenu id="selectMenu" value="#{formBean.model.selected_id}" valueChangeListener="#{formBean.selected}" styleClass="comboBoxes">
<f:selectItems value="#{formBean.myModelValues}" />
<a4j:ajax execute="@this" event="valueChange" render="resultTable chart" ajaxSingle="true"/>
</h:selectOneMenu>
</div>
<div id="list" class="container2">
<rich:dataTable id="resultTable" value="#{formBean.results}" var="query" rows="10" headerClass="columnclass" rowClasses="rowclass" styleClass="datatable" cellpadding="1" cellspacing="1" rules="rows" >
<rich:column headerClass="columnclass" width="100" >
<f:facet name="header">
<h:outputText value="Values" style="align:center; text-align:center; " />
</f:facet>
<h:outputText value="#{query.val}" />
</rich:column>
<rich:column headerClass="columnclass" width="100" >
<f:facet name="header">
<h:outputText value="Models" style="align:center; text-align:center; " />
</f:facet>
<h:outputText value="#{query.model}" />
</rich:column>
<f:facet name="footer">
<rich:dataScroller page="#{formBean.page}" style="margin-left: 15%; margin-right: 15%; width: 70%;">
<f:facet name="first">
<h:outputText value="First" />
</f:facet>
<f:facet name="last">
<h:outputText value="Last" />
</f:facet>
</rich:dataScroller>
</f:facet>
</rich:dataTable>
</div>
<div id="graph" class="container2">
<a4j:mediaOutput
id="chart"
element="img"
cacheable="false"
session="true"
createContent="#{mediaPainter.drawChartImage}"
value = "#{sdh:storeData(formBean.chartData)}"
mimeType="image/jpeg"
/>
</div>
</h:form>
</h:body>
</html>
. Вот список файлов .jar, развернутых с помощью веб-приложения:
cssparser-0.9.5.jar
mysql-connector-java-5.1.18.jar ehcache-1.6.0.jar
richfaces-components-api-4.1.0.Final.jar guava-r08.jar
richfaces-components-ui-4.1.0.Final.jar javax.faces-2.1.3.jar
richfaces-core-api-4.1.0.Final.jar jcommon-1.0.16.jar
richfaces-core-impl-4.1.0.Final.jar jfreechart-1.0.13.jar
sac-1.3.jar jstl-api-1.2.jar
Вот pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.models.presentation.</groupId>
<artifactId>graph_presentation</artifactId>
<name>graph_presentation</name>
<version>Final</version>
<packaging>war</packaging>
<url>http://jboss.org/richfaces</url>
<repositories>
<!-- You should seriously consider using a repository manager or declare repositories in your settings.xml.
See http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/ -->
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Maven Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Maven Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<!-- Setting this property using archetype-metadata.xml requiredPorperty
so that generated project uses correct version of richfaces.
-->
<org.richfaces.bom.version>4.1.0.Final</org.richfaces.bom.version>
</properties>
<build>
<finalName>individuel_broadcast3</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.richfaces</groupId>
<artifactId>richfaces-bom</artifactId>
<version>${org.richfaces.bom.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-components-ui</artifactId>
</dependency>
<dependency>
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-impl</artifactId>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
<dependency>
<groupId>jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>jee6</id>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>${project.build.directory}/${project.build.finalName}-jee6</webappDirectory>
<classifier>jee6</classifier>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>jee6</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<webappDirectory>${project.build.directory}/${project.build.finalName}-jee6</webappDirectory>
<classifier>jee6</classifier>
<packagingExcludes>WEB-INF/lib/javax.faces*</packagingExcludes>
<warSourceExcludes>WEB-INF/lib/javax.faces*</warSourceExcludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>