2015-05-07 40 views
5

Con primefaces 5.1 non era un problema per riferirsi solo un getter in un bean gestito comeEspressione con primefaces 5.2

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

Cambiato primefaces 5.2.2 che devo fare

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

e fornire un getter e un setter. Perché?

Eccezione:

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] 

Io uso JUEL EL, forse questo è il problema?

+2

Puoi fornire un po 'più di contesto? Il '' non è di PrimeFaces. È di Facelets. Anche le cose '# {}' non sono di PrimeFaces. Proviene da JSF e dal contenitore. Quindi è molto strano che il suo comportamento sia influenzato da un aggiornamento PrimeFaces. Questo è più probabile una mancata osservazione. – BalusC

+0

Io uso juel 2.2.7. Se cambio solo la versione pf dalla 5.1.17 alla 5.2.2, ottengo questa eccezione. Con 5.1.17 funziona senza errori. – opfau

+0

Ui: include è solo un esempio. Ho dovuto cambiarlo in diversi punti (per bloccarlo alla fine su un altro problema, in modo da tornare alla 5.1.17) – opfau

risposta

0

Sulla base della traccia dello stack, si dispone di un <p:outputLabel indicateRequired="true"> che vorrebbe controllare se uno qualsiasi è definito sulla proprietà del bean associata. PrimeFaces utilizza il suo numero di serie org.primefaces.el.ValueExpressionAnalyzer per quello che suddivide l'espressione EL che rappresenta il valore del componente di input associato al componente dell'etichetta.

Tuttavia, in 5.2 era changed rispetto al 5.1 come risultato di correzione per issue 8093 di non riuscire ispezione EL su nulli proprietà nidificate. Ora non distingue più le espressioni del metodo. La soluzione migliore è riportare un issue a ragazzi PrimeFaces e dire loro di dare un'occhiata a OmniFaces org.omnifaces.el.ExpressionInspector come eseguire l'espressione EL analizzando il lavoro nel modo giusto.

Tuttavia, è un po 'strano che si stia riferendo a un valore di sola lettura come valore di un componente di input richiesto.