a4j:support and rerender gridPanel problem
toxel Dec 18, 2008 10:15 AMJSF page:
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <html> <body> <f:view> <h:form id="arrival" prependId="false"> <rich:tabPanel> <rich:tab label="Tab 1" id="idtab"> </rich:tab> <rich:tab label="Tab2" id="regtab"> <rich:panel> <a4j:log hotkey="M" /> <h:outputLabel value="Type" /> <h:selectOneMenu value="#{test.hostSideType}" id="selectHostSideType" required="true"> <f:selectItems id="hosttypes" value="#{test.hostSideTypes}" /> <a4j:support event="onchange" actionListener="#{test.changeHostSideType}" reRender="hostOrgGridR,selectHostSideType" ajaxSingle="true" limitToList="true" /> </h:selectOneMenu> <h:panelGrid id="hostOrgGridR" columns="1"> <h:panelGrid id="hostOrgGrid" columns="2" rendered="#{test.showOrganization}"> <h:outputText value="#{test.hostSideType}" /> </h:panelGrid> </h:panelGrid> </rich:panel> </rich:tab> </rich:tabPanel> <h:commandButton id="saveButton" type="submit" /> </h:form> </f:view> </body> </html>
Java Bean
package ru.test; import java.util.ArrayList; import java.util.Collection; import javax.faces.event.ActionEvent; import javax.faces.model.SelectItem; public class BackingBean { private int hostSideType = 1; private boolean showOrganization; public Collection<SelectItem> getHostSideTypes(){ Collection<SelectItem> result = new ArrayList<SelectItem>(); result.add(new SelectItem(0, "T1")); result.add(new SelectItem(1, "T2")); return result; } public int getHostSideType() { return hostSideType; } public void setHostSideType(int hostSideType) { this.hostSideType = hostSideType; } public void changeHostSideType(ActionEvent event) { showOrganization = (hostSideType == 0); } public boolean isShowOrganization() { return showOrganization; } public void setShowOrganization(boolean showOrganization) { this.showOrganization = showOrganization; } }
faces-confix.xml :
<managed-bean> <managed-bean-name>test</managed-bean-name> <managed-bean-class>ru.test.BackingBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
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"> <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.jsp</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> <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>*.jsf</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app>
Situation:
1. Go to second tab
2. Switch �ombobox value on T1 - we must see "0" on page
3. Go to first tab.
4. Back to second tab.
5. Switch �ombobox value on T1 - we see "0" on page
it is a bug or not ?
what i can do for this code work normal.
thank you