I have a domain model for a search mask form which contains a dynamic number of input selects. For some input type a inputText which displays the selected value and is read only, a button for value selection and a button to clear the selected value. My problem is that when the clear button is clicked the inputText is not refreshed. I refresh by css class name with a generated and unique css class name. I haven't found another way to address right inputText correctly.
Here is some code to show the approach:
<!-- rows iteration -->
<ui:repeat ...>
<!-- columns iteration -->
<ui:repeat ...>
<ui:param name="curDummyCssClass" value="searchFieldChoiceDummyCssClass#{curRowIndex}#{curColumnIndex}" />
<p:inputText value="#{curMaskElement.propertyValue}" readonly="true" styleClass="#{curDummyCssClass}" size="#{curFieldSize}" rendered="#{(curIsChoice) and curHasValue}">
<f:converter converterId="choiceListConverterSearchMask" />
</p:inputText>
<!-- button for value selection -->
<p:commandButton ... />
<!-- button to clear value -->
<p:commandButton immediate="true" actionListener="#{searchMaskBL.clearChoiceSelection(curMaskElement)}" rendered="#{curIsChoice and curHasValue}"
icon="removeChoiceValueButtonIcon" update="@(.#{curDummyCssClass})" />
...
Basicly this approach works. On the entry screen the full search mask is shown. If the user has done a search, only the search fields are shown which have a value. On this 2nd reduced search mask the clear button does not refresh the inputText but the backing bean method is executed (means the value is cleared but ui is not refreshed). There is no validation error or a javascript error shown in firebug. I have no idea to debug this or solve it. The generated code seems ok I think:
<input id="searchInstancesFormId:j_idt163:1:j_idt165:1:colChoiceListSelectionSizedId" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all searchMaskInputElement searchMaskInputChoiceElement searchFieldShortChoiceDummyCssClass11" type="text" readonly="readonly" title="choice" size="40" value="Zur Freigabe" name="searchInstancesFormId:j_idt163:1:j_idt165:1:colChoiceListSelectionSizedId" role="textbox" aria-disabled="false" aria-readonly="true">
...
<button id="searchInstancesFormId:j_idt163:1:j_idt165:1:j_idt181" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only removeChoiceValueButton" type="submit" title="Alle Werte entfernen" onclick="PrimeFaces.ab({s:'searchInstancesFormId:j_idt163:1:j_idt165:1:j_idt181',u:'@(.searchFieldShortChoiceDummyCssClass11)'});return false;" name="searchInstancesFormId:j_idt163:1:j_idt165:1:j_idt181" role="button" aria-disabled="false">
The css class name is searchFieldShortChoiceDummyCssClass11. The 11 is the current row and column so each field has its unique css class name because only one field can be in one cell in the grid.
I have no idea why the update does not work. Any hints?
Regards Oliver
Got an exception after the not-working update:
16:25:49,724 ERROR [ip.server.archive.web.ex.MessageGeneratingExceptionHandler] (http-/0.0.0.0:9090-8) Exception occured: java.lang.NullPointerException at com.sun.faces.facelets.component.UIRepeat.restoreChildState(UIRepeat.java:433) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.facelets.component.UIRepeat.restoreChildState(UIRepeat.java:448) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.facelets.component.UIRepeat.restoreChildState(UIRepeat.java:448) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.facelets.component.UIRepeat.restoreChildState(UIRepeat.java:415) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.facelets.component.UIRepeat.setIndex(UIRepeat.java:546) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.facelets.component.UIRepeat.invokeOnComponent(UIRepeat.java:695) [jsf-impl-2.2.10.jar:2.2.10] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] at org.primefaces.context.PrimePartialViewContext.resetValues(PrimePartialViewContext.java:125) [primefaces-5.1.15.jar:5.1.15] at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57) [primefaces-5.1.15.jar:5.1.15] at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004) [jsf-api-2.2.10.jar:2.2] at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) [jsf-api-2.2.10.jar:2.2] at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:430) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) [jsf-impl-2.2.10.jar:2.2.10] at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jsf-api-2.2.10.jar:2.2] at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jsf-api-2.2.10.jar:2.2] at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jsf-api-2.2.10.jar:2.2] at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.2.10.jar:2.2.10] at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) [jsf-impl-2.2.10.jar:2.2.10] at org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.render(CodiLifecycleWrapper.java:126) [myfaces-extcdi-jsf20-module-impl-1.0.5.jar:1.0.5] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) [jsf-api-2.2.10.jar:2.2] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:72) [primefaces-5.1.15.jar:5.1.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at ip.client.commons.web.xss.filter.XSSFilter.doFilter(XSSFilter.java:53) [ip-filter-xss-4.3.0.jar:4.3.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.omnifaces.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:115) [omnifaces-1.8.1.jar:1.8.1-20140603] at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77) [omnifaces-1.8.1.jar:1.8.1-20140603] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at ip.client.web.filter.commons.AbstractFilter.doFilter(AbstractFilter.java:107) [ip-filter-commons-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.omnifaces.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:115) [omnifaces-1.8.1.jar:1.8.1-20140603] at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77) [omnifaces-1.8.1.jar:1.8.1-20140603] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149) [omnifaces-1.8.1.jar:1.8.1-20140603] at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77) [omnifaces-1.8.1.jar:1.8.1-20140603] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_75]