Comment concaténer des chaînes de caractères en EL ?
Je veux faire quelque chose comme ça mais ça ne marche pas :
${var1 == 0 ? 'hi' : 'hello ' + var2}
Il jette une exception en essayant d'intégrer 'hello'
à un Double
Comment concaténer des chaînes de caractères en EL ?
Je veux faire quelque chose comme ça mais ça ne marche pas :
${var1 == 0 ? 'hi' : 'hello ' + var2}
Il jette une exception en essayant d'intégrer 'hello'
à un Double
L'utilisation de la concaténation de chaînes de caractères en java fonctionne mieux.
#{var1 == 0 ? 'hi' : 'hello'.concat(var2)}
L'avantage ici est que vous pouvez également passer ceci dans une fonction, par exemple
#{myCode:assertFalse(myVar == "foo", "bad myVar value: ".concat(myVar).concat(", should be foo"))}
El +
signifie toujours une addition numérique en JSP Langage d'expression . Pour effectuer une concaténation de chaînes de caractères, il faudrait utiliser plusieurs expressions EL adjacentes, par exemple ${str1}${str2}
.
Si je lis correctement votre exemple, cela pourrait être écrit comme suit :
${var1 == 0 ? 'hi' : 'hello '}${var1 == 0 ? '' : var2}
Une autre possibilité serait d'utiliser JSTL qui est plus long mais qui pourrait être plus clair s'il y a plus de texte qui dépend de var1
:
<c:choose>
<c:when test="${var1 == 0}">hi</c:when>
<c:otherwise>hello <c:out value="${var2}"/></c:otherwise>
</c:choose>
El c:out
peut ne pas être nécessaire, selon la version de la JSP.
Je sais que c'est un vieux sujet, mais la réponse à cette question a changé au cours des six derniers mois, et il est important de noter ce changement, IMO (puisque j'ai trouvé ceci en googlant "el concatenate strings").
Depuis EL Expression 3.0 (vote public approuvé en août 2012, publié avec Java EE 7), une variante de la syntaxe utilisée à l'origine par l'auteur de la question est désormais valable :
${var1 == 0 ? 'hi' : 'hello ' += var2}
Il y a eu beaucoup de désaccord avec l'utilisation de +=
au lieu de +
mais c'est ce que c'est. Cela évaluera et concaténera correctement les chaînes de caractères comme prévu. Vous pouvez également utiliser la fonction cat
au lieu de l'opérateur +=
opérateur :
${var1 == 0 ? 'hi' : 'hello ' cat var2}
Bien que cela soit désormais légal, notez que vous ne pourrez pas l'utiliser tant que votre conteneur web (Tomcat, Jetty, GlassFish, etc.) n'aura pas publié une nouvelle version prenant en charge Java EE 7/EL 3.0. Celle-ci est attendue quelque temps avant la fin de l'année 2013, peut-être même dès l'automne.
Édité le 2015-02-19 de noter que l'opérateur final était +=
et non +
comme la réponse initiale.
Malheureusement, ce n'est pas correct. Au dernier moment, au grand dam d'à peu près tout le monde, l'opérateur est passé du "+", tout à fait logique, au "+=", qui prête à confusion. Je ne sais pas ce que ces gens fumaient :X
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
stackoverflow.com/questions/296398/
0 votes
Utilisez simplement 'hello'.concat(var2)