JSF with Ajax4JSF and RichFaces
unleashed11 Dec 8, 2009 10:48 AMHello i have a problem.
I´m new in Ajax.
i would to rerender the id="BigPic" but it dosn´t.
The bigpic is the pic what it is in the dataTable when i click it.
Here the source Code.
data.jsp
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <!-- RichFaces tag library declaration --> <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> <html> <body> <f:view> <a4f:form ajaxSubmit="true"> <rich:dataTable value="#{tableBean.perInfoAll }" var="dataItem" id="taskList"> <rich:column> <h:graphicImage value="#{dataItem.absolutePath}" width="70" height="50" /> </rich:column> <rich:column> <a4j:commandLink id="link" ajaxSingle="true" action="#{showPic.processAction}" reRender="BigPic"> <h:outputText value="#{dataItem.picName }"></h:outputText> <f:attribute name="picURL" value="#{dataItem.absolutePath }" /> </a4j:commandLink> </rich:column> </rich:dataTable> </a4f:form> <h:panelGroup id="BigPic"> <h:graphicImage value="#{showPic.picShowURL }" rendered="#{not empty showPic.picShowURL }" /> </h:panelGroup> </f:view> </body> </html>
showPic.java
package roseindia1; import javax.faces.component.UIParameter; import javax.faces.event.*; public class ShowPic implements ActionListener { private String picShowURL; public void processAction(ActionEvent event) throws AbortProcessingException { UIParameter component = (UIParameter) event.getComponent() .findComponent("picURL"); String strValue = component.getValue().toString(); System.out.println(strValue); new showPicURl(strValue); picShowURL = strValue; } public String getPicShowURL() { return picShowURL; } public void setPicShowURL(String picShowURL) { this.picShowURL = picShowURL; } public class showPicURl { private String showPicURl; public showPicURl(String showPicURL) { this.showPicURl = showPicURL; } public String getShowPicURL() { return showPicURl; } public void setShowPicURL(String showPicName) { this.showPicURl = showPicName; } } }
TableBean.java
package roseindia1; import java.util.*; import java.io.*; import java.lang.reflect.Array; public class TableBean { private List perInfoAll = new ArrayList(); public void setPerInfoAll(List perInfoAll) { this.perInfoAll = perInfoAll; } public List getPerInfoAll() { try { File thumbFile = new File("D:\\PIC"); File[] files = thumbFile.listFiles(); for (File file : files) { if (file.getName().toLowerCase().endsWith(".jpg")) { perInfoAll.add(new TableData(file.getAbsolutePath(), file .getName())); } } } catch (Exception e) { System.out.println("Error Data : " + e.getMessage()); } return perInfoAll; } public class TableData { private String absolutePath; private String picName; public TableData(String absolutePath, String picName) { this.absolutePath = absolutePath; this.picName = picName; } public String getAbsolutePath() { return absolutePath; } public void setAbsolutePath(String absolutePath) { this.absolutePath = absolutePath; } public String getPicName() { return picName; } public void setPicName(String picName) { this.picName = picName; } } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>WebAplication1</display-name> <!-- Plugging the "Blue Sky" skin into the project --> <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <!-- Making the RichFaces skin spread to standard HTML controls --> <context-param> <param-name>org.richfaces.CONTROL_SKINNING</param-name> <param-value>enable</param-value> </context-param> <filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <listener> <listener-class>com.sun.faces.config.ConfigureListener</listener-class> </listener> <!-- Faces Servlet --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> <managed-bean> <managed-bean-name>tableBean</managed-bean-name> <managed-bean-class>roseindia1.TableBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>showPic</managed-bean-name> <managed-bean-class>roseindia1.ShowPic</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>bigPic</managed-bean-name> <managed-bean-class>roseindia1.BigPic</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config>