|
Hey guys, I running into an issue when using a dataTable (tomahawk or
core) with selectOneMenu and selectBooleanCheckbox, for some reason its values
are getting “defaulted” or “lost” i.e. on a selectOneMenu
bound to a value object from a collection in the backing bean, where I have
verified that the value is set correctly up until the point it started
rendering the table, some render process sets the value to empty string,
similar with the selectBooleanCheckbox except the value always gets set to
false. I purposely set the values to “true” in the UI and
placed an exception for the check box for anything that set it to false and
here is the sample stack trace I get. This occurs on the rendering phase
of the life cycle i.e. Response phase com.ies.common.error.IESRuntimeException: This should not be
false at
com.ies.scholar.vo.form.FormInstanceVO.setAccessable(FormInstanceVO.java:300) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at
java.lang.reflect.Method.invoke(Method.java:585) at
org.apache.myfaces.el.PropertyResolverImpl.setProperty(PropertyResolverImpl.java:406) at
org.apache.myfaces.el.PropertyResolverImpl.setValue(PropertyResolverImpl.java:173) at
com.sun.facelets.el.LegacyELContext$LegacyELResolver.setValue(LegacyELContext.java:201) at
com.sun.el.parser.AstValue.setValue(AstValue.java:113) at
com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:246) at
com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93) at com.sun.facelets.el.LegacyValueBinding.setValue(LegacyValueBinding.java:68) at
javax.faces.component.UIInput.updateModel(UIInput.java:269) at
javax.faces.component.UIInput.processUpdates(UIInput.java:206) at
javax.faces.component.UIData.process(UIData.java:733) at
javax.faces.component.UIData.processColumnChildren(UIData.java:714) at
javax.faces.component.UIData.processUpdates(UIData.java:622) at
org.apache.myfaces.component.html.ext.HtmlDataTableHack.processUpdates(HtmlDataTableHack.java:133) at
org.apache.myfaces.component.html.ext.HtmlDataTable.processUpdates(HtmlDataTable.java:379) at
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:645) at
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:645) at
javax.faces.component.UIForm.processUpdates(UIForm.java:87) at
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:645) at
javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:157) at
org.apache.myfaces.lifecycle.LifecycleImpl.updateModelValues(LifecycleImpl.java:302) at
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:81) at
javax.faces.webapp.FacesServlet.service(FacesServlet.java:137) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:97) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at
com.ies.common.ui.common.filter.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:43) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at
java.lang.Thread.run(Thread.java:595) This stack trace represents the custom exception I threw
when something from the component when through its processUpdates cycle. Here is some sample code: “from the JSF page” <t:dataTable id="centerInstanceList" var="centerForm" value="#{ formBean.formInstances}" styleClass="detailsGrid" headerClass="detailsHeader" rowClasses="detailsOnRow,detailsOffRow" rowCountVar="rowCount" rowIndexVar="rowIndex"> … <t:column style="width:10%"> <f:facet name="header"> <h:outputText value="#{messages.form_center_list_empDoc}" /> </f:facet> <t:selectOneMenu value="#{centerForm.docuId}"> <f:selectItems value="#{formBean.documentSelectItems}" /> </t:selectOneMenu> </t:column> … <t:column style="width:5%"> <f:facet name="header"> <h:outputText value="#{messages.form_center_list_Sta}" /> </f:facet> <t:selectBooleanCheckbox
value="#{centerForm.accessable}"/> </t:column> </t:dataTable> My FormInstanceVO is a pojo except for my debug exception
code snippets (from backing bean formBean.formInstances) public Boolean getAccessable() { return
this.accessable; } public void setAccessable(Boolean
accessable) { if(Boolean.FALSE.equals(accessable))
{ IESRuntimeException
e = new IESRuntimeException("This should not be false"); e.printStackTrace(); throw
e; } this.accessable
= accessable; } An interesting thing to note is that if I change any of
these it a <h:inputText /> or an <h:outputText /> it correctly
display the values that are in the VOs Could someone help me figure out what I am missing? Why
would the dataTable override the values that were preset in the value objects
for a selectBooleanCheckbox or selectOneMenu? I am using MyFaces 1.3 Facelets 1.1.11 hibernate-3.2.0.cr2 Spring Framework 1.2.8 Running on apache-tomcat-5.5.17 TIA Regards, Shawn Recinto |
- Problem using dataTable, selectOneMenu and selectBoolean... Shawn Recinto
- Re: Problem using dataTable, selectOneMenu and sele... Mike Kienenberger

