web-dev-qa-db-fra.com

Comment insérer des caractères spéciaux comme & et <dans l'attribut de valeur des composants JSF?

Comment insérer des caractères spéciaux comme & et < dans les composants JSF value attribut?

Par exemple: je veux quelque chose comme ça:

<h:outputText value="Tom & Jerry Show" />

Lorsque j'essaie, j'obtiens l'exception suivante:

javax.faces.view.facelets.F braceletException: erreur d'analyse /foo.xhtml: erreur tracée [ligne: 15] Le nom de l'entité doit immédiatement suivre le "&" dans la référence d'entité.

Et en cas de <, J'obtiens l'exception suivante:

javax.faces.view.facelets.F BraceletException: erreur d'analyse /foo.xhtml: erreur tracée [ligne: 15] La valeur de l'attribut "valeur" associée à un type d'élément "h: outputText" ne doit pas contenir le caractère "<".

25
Rajat Gupta

Vous devez les échapper vers entités XML .

<h:outputText value="Tom &amp; Jerry Show" />

Ce problème n'est pas lié à JSF en soi, mais à la technologie d'affichage. Vous utilisez apparemment des Facelets (ce qui est parfaitement bien!). Facelets est cependant une technologie de vue basée sur XML, vous devez donc vous assurer que le modèle est bien XML et que tous les caractères spéciaux qui doivent être représentés tels quels sont échappés comme ci-dessus.

Dans le wikipedia vous pouvez trouver une liste d'entités de caractères prédéfinies qui doivent être échappées dans le XML quand vous le souhaitez pour les afficher tels quels. Ce sont les entités de caractère suivantes:

"     &quot;
&     &amp;
'     &apos;
<     &lt;
>     &gt;

Voir également:

59
BalusC