parts of form dont get submitted if rendered by condition
ret Apr 5, 2011 5:39 AMhello!
i am facing a strange problem: in a form i would like to display parts of it by a certian condition (some param is set or not).
if i put this in a panelGroup, the parts of the form seem not to be submitted. This only appears if i put them in a panelGroup, but not adding rendered directly to the input!
anyone have an explanation?
sample page code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head> <f:metadata> <f:viewParam name="userid" value="#{testBean.userid}" converter="javax.faces.Long" /> <f:viewParam name="action" value="#{testBean.action}" /> </f:metadata> </h:head> <body> <h:form> id: <h:inputText value="#{testBean.userid}" /><h:outputText value=" set" rendered="#{not empty testBean.userid}"/><br/> action: <h:inputText value="#{testBean.action}" /><h:outputText value=" set" rendered="#{not empty testBean.action}"/><br/> <h:panelGroup rendered="#{not empty testBean.action}"> editmode: <h:inputText value="#{testBean.mode}" /> <h:outputText value=" set" rendered="#{not empty testBean.mode}"/> <br/> </h:panelGroup> <h:commandButton value="senden" action="#{testBean.submit}"/> </h:form> </body> </html>
sample bean code:
import java.io.Serializable; import javax.enterprise.context.RequestScoped; import javax.inject.Named; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @RequestScoped @Named public class TestBean implements Serializable { private static final long serialVersionUID = -8792513244688669749L; private static final transient Log LOG = LogFactory.getLog(TestBean.class); private String action = ""; public String getAction() {return action;} public void setAction(String action) {LOG.debug("set action="+action);this.action = action;} private long userid = 0; public long getUserid() {return userid;} public void setUserid(long userid) {LOG.debug("set userid="+userid);this.userid = userid;} private String mode = ""; public String getMode() {return mode;} public void setMode(String mode) {LOG.debug("set mode="+mode);this.mode = mode;} public void submit() { LOG.debug("handle submit: action=" + action + ", mode=" + mode + ",userid=" + userid); } }
usage: type in an action, then the mode-input gets displayed. then type in a mode and sumbit. the mode will not get submitted correctly if the input is within the panelGroup!