2015-05-07 24 views
5

Z primefaces 5.1 nie było problemu, aby odnosić się tylko getter w zarządzanym fasoli jakExpression zmiana języka z primefaces 5,2

<ui:param name="curSearch" value="#{searchBL.getSelectedSearch()}" /> 

Zmieniono primefaces 5.2.2 muszę zrobić

<ui:param name="curSearch" value="#{searchBL.selectedSearch}" /> 

i zapewnić gettera i setera. Czemu?

Wyjątek:

09:35:29,178 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-/0.0.0.0:9090-6) Error Rendering View[/views/main.xhtml]: javax.el.ELException: /sections/search/searchOptions.xhtml @23,111 value="#{curSearch.sortPropertyName}": /sections/search/firstSearchTab.xhtml @44,53 value="#{curSearch}": /sections/searchMaskContent.xhtml @38,74 value="#{searchBL.getSelectedSearch()}": Cannot find method 'getSelectedSearch' in 'class SearchBL$Proxy$_$$_WeldClientProxy' 
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:103) [jsf-impl-2.2.10.jar:2.2.10] 
at org.primefaces.el.ValueExpressionAnalyzer.intercept(ValueExpressionAnalyzer.java:69) [primefaces-5.2.2.jar:5.2.2] 
at org.primefaces.el.ValueExpressionAnalyzer.getReference(ValueExpressionAnalyzer.java:27) [primefaces-5.2.2.jar:5.2.2] 
at org.primefaces.metadata.BeanValidationMetadataExtractor.extractPropertyDescriptor(BeanValidationMetadataExtractor.java:64) [primefaces-5.2.2.jar:5.2.2] 
at org.primefaces.metadata.BeanValidationMetadataExtractor.extractConstraintDescriptors(BeanValidationMetadataExtractor.java:51) [primefaces-5.2.2.jar:5.2.2] 
at org.primefaces.metadata.BeanValidationMetadataExtractor.extractDefaultConstraintDescriptors(BeanValidationMetadataExtractor.java:46) [primefaces-5.2.2.jar:5.2.2] 
at org.primefaces.component.outputlabel.OutputLabelRenderer.isNotNullDefined(OutputLabelRenderer.java:139) [primefaces-5.2.2.jar:5.2.2] 
at org.primefaces.component.outputlabel.OutputLabelRenderer.encodeEnd(OutputLabelRenderer.java:121) [primefaces-5.2.2.jar:5.2.2] 
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) [jsf-api-2.2.10.jar:2.2] 
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) [jsf-impl-2.2.10.jar:2.2.10] 
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:114) [jsf-impl-2.2.10.jar:2.2.10] 

używam Juel EL, być może to jest problem?

+2

Czy możesz podać nieco więcej kontekstu? '' 'nie pochodzi z PrimeFaces. To od Facelets. Rzeczy '# {}' również nie pochodzą z PrimeFaces. To od JSF i kontenera. To bardzo dziwne, że na jego zachowanie ma wpływ aktualizacja PrimeFaces. Jest to bardziej prawdopodobne błędna obserwacja. – BalusC

+0

Używam juel 2.2.7. Jeśli zmienię tylko wersję pf z 5.1.17 na 5.2.2, otrzymam ten wyjątek. W wersji 5.1.17 działa bezbłędnie. – opfau

+0

Ui: include to tylko jeden przykład. Musiałem to zmienić w kilku miejscach (na końcu zatrzymałem się przy innym problemie, by wrócić do wersji 5.1.17). – opfau

Odpowiedz

0

Na podstawie śledzenia stosu, użytkownik ma numer <p:outputLabel indicateRequired="true">, który chciałby sprawdzić, czy w powiązanej właściwości komponentu zdefiniowano dowolną wartość @NotNull. PrimeFaces używa swojej rodzimej wersji do określenia tego, które spowoduje rozbicie wyrażenia EL reprezentującego wartość komponentu wejściowego powiązanego ze składnikiem etykiety.

Jednak w 5.2 było changed w porównaniu do 5.1 w wyniku fix dla issue 8093 nieosiągnięcia EL inspekcję zerowych właściwościach zagnieżdżonych. Teraz nie rozróżnia już wyrażeń metod. Najlepiej jest zgłosić się do facetów PrimeFaces i powiedzieć im, aby przejrzeli OmniFaces org.omnifaces.el.ExpressionInspector, jak wykonać zadanie analizy ekspresji EL we właściwy sposób.

To trochę dziwne, że odnosisz się do wartości tylko do odczytu jako wartość wymaganego komponentu wejściowego.