9
votes

Comment bien échapper à des citations triples triples dans les balises JSP

Nous venons de mettre à niveau Tomcat et le plus récent Tomcat n'aime pas les citations imbriquées dans la balise, nous devons donc alterner entre des citations simples et doubles. Par exemple,

nous avions, P>

<form id="search" action="<fmt:message key='<c:out value="${requestScope.search_url}"/>'/>">


0 commentaires

4 Réponses :


1
votes

Je n'ai pas essayé cela, mais ailleurs en Java, vous pouvez simplement échapper aux citations imbriquées, puis échapper à \ pour les citations à double naisse: xxx

éditer: comme il s'agit d'un Attribut, ce qui précède ne fonctionnera probablement pas, mais une approche similaire pourrait fonctionner avec des guillemets simples: xxx

Alternativement, utilisez un appel de méthode et de renvoyer la chaîne formatée. ..


0 commentaires

5
votes

Si vous ne voulez pas que vous ne voulez pas mettre à jour tout votre JSP: s Juste pour la mise à niveau Tomcat, définissez la propriété système " org.apache.jasper.compiler.parser.strict_quote_escague " à false.

Le moyen le plus simple de cela consiste à éditer Catalina.sh et à ajouter ce qui suit à java_opts: xxx


1 commentaires

C'est ce que nous faisons maintenant. Mais nous voulons changer notre JSP pour être conforme.



3
votes

Vous avez probablement longtemps résolu ce problème, mais dans le cas où quelqu'un d'autre circule sur ceci:

qui ne compilait pas à cause des citations imbriquées, mais à cause des étiquettes imbriquées. Vous ne pouvez pas utiliser de C: Out à l'intérieur de l'attribut de la balise FMT: Message. Cependant, vous pouvez le faire fonctionner en définissant une variable temporaire: xxx

aussi, appelant votre exemple "Triple" Les citations imbriquées sont trompeuses. Les caractères de double citation entourant la valeur de l'attribut Action de votre étiquette de formulaire ne se comportent pas comme des citations du point de vue du moteur JSP. Tout en dehors d'une {...} {...} el expression, ou en dehors d'une balise jsp connue avec un préfixe connu est traité comme des octets arbitraires.


1 commentaires

Comme mentionné ci-dessus, vous devez utiliser l'attribut var de la balise C: OUT, éliminant ainsi le besoin de cette étiquette C: Définition.



5
votes

plusieurs manières:

  1. n'est pas nécessaire si vous n'avez pas besoin de xml-échapper-y: XXX

  2. a un attribut var qui stocke le résultat dans le contexte de la page: XXX

  3. pour le cas est obligatoire (XML s'échappe et ainsi de suite, je me pose cependant une question de la valeur de l'échappement XML pour les touches de message), il a un var attribut également: XXX


0 commentaires