2010-12-03 50 views
1

Editer: ça ne fait rien!Comment puis-je empêcher les expressions EL d'être évaluées dans des composants JSF non rendus?

Je suis en train de passer mon projet de JSF 1.2 avec Facelets à JSF 2 avec Facelets. Il semble que dans JSF 2, les expressions EL dans les composants qui ne sont pas rendus sont évaluées. Cela ne semble pas être le cas dans JSF 1.2. Alors vous avez des problèmes tels que:

<h:panelGroup rendered="#{not empty myBean.myPojo}"> 
    <h:outputText value="#{myBean.myPojo.pojoProperty}" /> 
</h:panelGroup> 

provoquant une NullPointerException si myBean.myPojo est nulle, quand il ne l'a pas dans la version JSF 1.2 de mon projet. Une alternative est d'utiliser c: if pour ces cas (au lieu de h: panelGroup rendered = "..."), mais cela vient avec ses propres problèmes. Pourrait-il y avoir autre chose que je fais mal? Y a-t-il une configuration pour cela? Merci!

+1

Dans l'exemple de code particulier, il ne devrait pas provoquer NPE. Veuillez poster le code * réel *. Ou si c'est vraiment le cas, alors c'est un bug dans EL. EL est censé être nullsafe. Vous devez ensuite mentionner quelle implémentation EL (servletcontainer) vous utilisez. – BalusC

+0

Vous avez raison; J'ai trouvé une erreur sans rapport qui a causé ceci. Je vous remercie! – Nick

Répondre

1

Si c'est tout ce qui se passe, alors cela semble être un bug dans l'implémentation EL sous-jacente. Je suggère de vérifier s'il y a une nouvelle version, si ce problème a déjà été signalé, et sinon - signalez-le! :)