javax.el.ELException: Impossible d'analyser l'expression [{pz:instanceof(objet, com.projet.domaine.Maclasse')}]
Currenty j'ai un projet web avec JSF 1.2 et Facelets cours d'exécution dans tomcat 6.0.18.0. J'ai décidé de mettre à niveau le conteneur de servlet, j'ai donc déployé dans tomcat 7 et tout semblait ok jusqu'à ce que nous avons touché un point de vue à l'aide de mon custome facelet fonctions.
javax.el.ELException: Failed to parse the expression [{pz:instanceof(object,'com.project.domain.MyClass')}]
Caused by: org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 5. Was expecting one of:
"}" ...
"." ...
"[" ...
Cette erreur se produit lors de l'analyse du code suivant:
<ui:repeat var="object" value="#{objects}">
<ui:fragment rendered="#{pz:instanceof(object,'com.project.domain.MyClass')}">
...
Si je comprends bien, il lève une erreur à cause de la colon dans l'expression . J'ai suivi à la jasper-el qui viennent avec le tomcat/lib, et si je remplace jasper.jar et jasper-el.jar avec ceux de tomcat 6.0.18 everythign fonctionne bien.
Quelqu'un d'autre a eu ce problème avant la mise à niveau de leur tomcat? Et Comment ont-ils résolu?
Pourrais-je déployer en production tomcat 7 avec ces jasper pot de tomcat 6, ou cela pourrait-il causer d'autres problèmes.
OriginalL'auteur Garytxo | 2011-10-23
Vous devez vous connecter pour publier un commentaire.
C'est en fait une fausse exception. Il a une autre cause sous-jacente. Le nom de la fonction
instanceof
est pas valide.La EL 2.2 spécification dit ce qui suit:
et
Où le langage Java identificateur de stands pour des mots-clés comme
instanceof
,if
,while
,class
,return
,static
,new
, etc. Ils ne peuvent pas être utilisés comme variable/les noms de fonction en EL. Dans le cas où vous avez propriétés avec celles des noms, utiliser le corset notation plutôt comme#{bean['class'].simpleName}
au lieu de#{bean.class.simpleName}
.Cela a été corrigé dans Tomcat 7.0.4 ou quelque part près de l'avant de cette version, comme indiqué par question 50147 où quelqu'un d'autre l'a souligné le même problème que vous avez. Donc, pour résoudre votre problème, vous devez renommer votre EL nom de la fonction, par exemple,
isInstanceOf
ou quelque chose.OriginalL'auteur BalusC
Ajouter cette ligne dans catalina.propriétés ([tomcat dossier]/conf), et il devrait résoudre le problème.
Cependant, vous ne devez pas utiliser les mots réservés.
OriginalL'auteur Adrian Cosma
Vous pouvez également tenter de changer la syntaxe. J'ai eu exactement le même problème avec le code que j'étais maintenant quand nous allions à partir de Tomcat 6 à 7. J'ai dû changer
myobject.class.name
àmyobject['class'].name
. Après j'ai fait cette modification de mon code fonctionne parfaitement à nouveau.OriginalL'auteur user2970100
Grande astuce, en effet! J'ai eu de changement dans ma jspx ${instance.classe.simpleName == ...} ${instance['classe'].simpleName eq ...}.
J'ai été en mouvement à partir de vFabric sur tomcat 6 à vFabric sur tomcat 7
OriginalL'auteur user3032655