Актуализирането чрез css име с primefaces не работи (понякога)

Имам модел на домейн за формуляр за маска за търсене, който съдържа динамичен брой избори на вход. За някои типове въвеждане inputText, който показва избраната стойност и е само за четене, бутон за избор на стойност и бутон за изчистване на избраната стойност. Проблемът ми е, че когато се щракне върху бутона за изчистване, inputText не се обновява. Опреснявам чрез име на css клас с генерирано и уникално име на css клас. Не намерих друг начин да адресирам правилно десния inputText.

Ето малко код за показване на подхода:

<!-- 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})" />

...

По принцип този подход работи. На началния екран се показва пълната маска за търсене. Ако потребителят е извършил търсене, се показват само полетата за търсене, които имат стойност. На тази 2-ра намалена маска за търсене бутонът за изчистване не опреснява inputText, но се изпълнява методът на backing bean (означава, че стойността се изчиства, но потребителският интерфейс не се опреснява). Няма грешка при валидиране или грешка в javascript, показана в firebug. Нямам идея да коригирам това или да го разреша. Генерираният код изглежда добре според мен:

<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">

Името на класа css е searchFieldShortChoiceDummyCssClass11. 11 е текущият ред и колона, така че всяко поле има свое уникално име на css клас, защото само едно поле може да бъде в една клетка в мрежата.

Нямам представа защо актуализацията не работи. Някакви съвети?

Поздрави Оливър

Получих изключение след неработещата актуализация:

Въведеният текст не е част от частичния отговор на ajax. Проверих xml. Но защо?


person opfau    schedule 20.04.2015    source източник
comment
какъв е обхватът на вашите бобове и каква JSF версия използвате? А „понякога“ е трудно за разбиране. Кога работи и кога не   -  person opfau    schedule 20.04.2015
comment
Bean-ът е SessionScoped и аз използвам JSF 2.2.10. 'понякога обяснение': както е споменато в началната маска за търсене, когато не са попълнени полета, се показват всички полета за въвеждане. Ако потребителят попълни e. ж. една стойност и извършва търсене, резултатът от търсенето се показва и се показват само полетата за въвеждане на търсене, които имат стойност. Когато всички полета са показани, това работи, при „намалена“ маска за търсене актуализацията не се извършва на полето за въвеждане, но се изпълнява логиката на bean. Но на пълен и намален код е един и същ.   -  person Kukeltje    schedule 20.04.2015
comment
Ами ако промените частичното запазване на състоянието на false stackoverflow.com/questions/14215987/   -  person opfau    schedule 21.04.2015
comment
Без частично запазване на състоянието получавам NPE в конвертор. Инжектирането на зависимост вече не се извършва там.   -  person Kukeltje    schedule 21.04.2015
comment
16:25:49,724 ГРЕШКА [ip.server.archive.web.ex.MessageGeneratingExceptionHandler] (http-/0.0.0.0:9090-8) Възникна изключение: java.lang.NullPointerException в com.sun.faces.facelets.component. UIRepeat.restoreChildState(UIRepeat.java:433) [jsf-impl-2.2.10.jar:2.2.10] в com.sun.faces.facelets.component.UIRepeat.restoreChildState(UIRepeat.java:448) [jsf-impl -2.2.10.jar:2.2.10] в com.sun.faces.facelets.component.UIRepeat.restoreChildState(UIRepeat.java:448) [jsf-impl-2.2.10.jar:2.2.10] в com. sun.faces.facelets.component.UIRepeat.restoreChildState(UIRepeat.java:415) [jsf-impl-2.2.10.jar:2.2.10] в com.sun.faces.facelets.component.UIRepeat.setIndex(UIRepeat. java:546) [jsf-impl-2.2.10.jar:2.2.10] в com.sun.faces.facelets.component.UIRepeat.invokeOnComponent(UIRepeat.java:695) [jsf-impl-2.2.10.jar :2.2.10] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnCompon ent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2 ] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf -api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponent. invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2 ] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf -api-2.2.10.jar:2.2] в javax.faces.component.UIComponent.invokeOnComponent(UI Component.java:1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api -2.2.10.jar:2.2] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2. 2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java :1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2.10.jar:2.2] в javax.faces .component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:713) [jsf-api-2.2. 10.jar:2.2] в javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1503) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java :713) [jsf-api-2.2.10.jar:2.2] в org.primefaces.context.PrimePartialViewContext.resetValues(PrimePartialViewContext.java:125) [primefaces-5.1.15.jar:5.1.15] в org.primefaces .context.PrimePartialViewContext.processPartial(PrimePart ialViewContext.java:57) [primefaces-5.1.15.jar:5.1.15] в javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004) [jsf-api-2.2.10.jar:2.2] в javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) [jsf-api-2.2.10.jar:2.2] в com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:430) [jsf-impl-2.2.10.jar:2.2.10] в com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) [jsf-impl-2.2.10.jar:2.2.10 ] в javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jsf-api-2.2.10.jar:2.2] в javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jsf -api-2.2.10.jar:2.2] в javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jsf-api-2.2.10.jar:2.2] в com.sun.faces.lifecycle. RenderResponsePhase.execute(RenderResponsePhase.java:120) [jsf-impl-2.2.10.jar:2.2.10] в com.sun. faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.2.10.jar:2.2.10] на com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) [jsf -impl-2.2.10.jar:2.2.10] в 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] в javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) [jsf-api-2.2.10.jar:2.2] в org.apache.catalina. сърцевина. ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain. java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:72) [primefaces -5.1.15.jar:5.1.15] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final -redhat-1] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в ip.client.commons.web.xss.filter.XSSFilter.doFilter(XSSFilter.java:53) [ip-filter-xss-4.3.0.jar:4.3.0] в org.apache.catalina.core.ApplicationFilterChain. internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] на или g.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.omnifaces.filter. CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:115) [omnifaces-1.8.1.jar:1.8.1-20140603] в org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77) [omnifaces-1.8.1.jar :1.8.1-20140603] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1 ] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в ip.client. web.filter.commons.AbstractFilter.doFilter(AbstractFilter.java:107) [ip-filter-commons-5.0.0-SNAPSHOT.jar:5.0.0-SNAPSHOT] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:246) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.omnifaces.filter .CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:115) [omnifaces-1.8.1.jar:1.8.1-20140603] в org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77) [omnifaces-1.8.1. jar:1.8.1-20140603] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7. 2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat- 1.jar:7.2.2.Final-redhat-1] в org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149) [omnifaces-1.8.1.jar:1.8.1-20140603] в org.omnifaces .filter.HttpFilter.doFilter(HttpFilter.java:77) [omnifaces-1.8.1.jar:1.8.1-20140603] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb- 7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final- redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.2.Final-redhat-1.jar: 7.2.2.Final-redhat-1] в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.2.Fin al-redhat-1.jar:7.2.2.Final-redhat-1] в 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] в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.2.Final-redhat-1. jar:7.2.2.Final-redhat-1] в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2. Final-redhat-1] в org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.coyote .http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler .процеси s(Http11Protocol.java:653) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] в 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] в java.lang.Thread.run(Thread.java:745) [rt.jar :1.7.0_75]   -  person opfau    schedule 22.04.2015