# {...} n'est pas autorisé dans le texte du modèle
<a4j:ajax event="click" render="tempval" listener="#{question.setParameters}" />
Lorsque nous sommes à l'aide de ce code, le serveur renvoie une exception avec le message
#{...} is not allowed in template text
Comment est-il la cause et comment puis-je le résoudre?
source d'informationauteur Sanat Pandey
Vous devez vous connecter pour publier un commentaire.
Vous obtiendrez ce message d'erreur lorsque vous êtes à l'aide de JSP de vue de la technologie et vous êtes à l'aide de
#{...}
dans le modèle de texte tel que (la<p>
est tout simplement exemplaire, il peut être tout de la plaine de l'élément HTML):C'est à savoir pas pris en charge dans JSP, mais il est soutenu dans son successeur Facelets. En JSP, vous devez utiliser explicitement
<h:outputText>
:Cependant, dans votre extrait de code dans lequel vous êtes à l'aide de
#{...}
dans un composant JSF déjà, qui ne peut se faire que si lea4j
de la bibliothèque de balises n'est pas correctement été enregistré comme une bibliothèque de balises JSP par<%@ taglib %>
ou si lea4j
de la bibliothèque de balises ne peuvent pas être trouvés dans le classpath. De cette façon, le<a4j:ajax>
balise n'est pas analysé et traité comme du texte brut, y compris tous les attributs avec EL expressions. Ainsi, le#{question.setParameters}
est traitée comme EL dans le texte du modèle, ce qui n'est pas pris en charge dans les JSP.Mais votre problème est plus grand: le RichFaces 4.la composante x de la bibliothèque, qui le
<a4j:ajax>
est une partie de, ne prend pas en charge JSP. JSP est obsolète depuis JSF 2.0 et réussi par Facelets. Toutes les bibliothèques de composants JSF comme RichFaces ont décidé de laisser tomber le support pour JSP, parce que c'est un enfer de beaucoup de travail pour développer et soutenir les bibliothèques de balises et de composants pour les deux point de vue différent technologies JSP et Facelets. Donc, même si vous avez RichFaces 4.x déjà dans le classpath et que vous avez correctement enregistré par<%@ taglib %>
ça ne marcherait jamais en JSP, tout simplement parce que le JSP.tld
fichier n'existe pas pour lea4j
espace de noms.Afin d'utiliser JSF 2.0 compatible bibliothèques de composants, vous avez à migrer à partir de JSP pour Facelets. Une alternative est d'utiliser l'ancienne RichFaces 3.x version à la place. La Version 3.3.3 prend en charge JSF 2.0 sur JSP. Il offre la
<a4j:support>
balise pour atteindre le même. Mais gardez à l'esprit que vous allez vers l'arrière dans la technologie de cette façon. Vous devez continuer à aller de l'avant. Baisse de JSP et aller pour son successeur Facelets.Voir aussi:
J'ai connu le même problème, pour moi, la cause de l'erreur est une ligne de commentaire dans le code javascript qui utilisent #{...} pour assigner une valeur à un champ dans ma page.
une fois que j'ai enlevé il a bien fonctionné, sonne bizarre, mais c'est ce qui s'est passé.