0

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]

opfau
  • 731
  • 9
  • 37
  • The input text is not part of the ajax partial response. I checked the xml. But why? – opfau Apr 20 '15 at 11:04
  • what is the scope of your beans and what JSF version are you using? And 'sometimes' is difficult to comprehend. When does it work and when doesn't it – Kukeltje Apr 20 '15 at 14:54
  • The bean is SessionScoped and I am using JSF 2.2.10. 'sometimes explanation': as mentioned on the inital search mask when no fields are filled, all input fields are displayed. If the user fills in e. g. one value and does a search, the search result is displayed and only the search input fields are shown which have a value. When all fields are shown it works, on the 'reduced' search mask the update is not done of the input field but the bean logic is executed. But on full and reduced it is the same code. – opfau Apr 21 '15 at 07:12
  • What if you change the partial statesaving to false http://stackoverflow.com/questions/14215987/partial-state-saving-feature-in-jsf-2 – Kukeltje Apr 21 '15 at 16:30
  • Without partial state saving I get a NPE in a converter. The dependency injection is not done anymore there. – opfau Apr 22 '15 at 06:46

0 Answers0