如何在EL字符串文字中使用新行字符?

时间:2015-10-07 13:48:49

标签: jsp el

我需要使用EL在文本区域内打印多行文本。当我这样做时:

<textarea rows="4">
    ${o.condition ? "blah" : "1. \n2. \n3. \n4."}
</textarea>

我明白了:

  

无法为JSP编译类

等同于

<%=o.getCondition() ? "blah" : "1. \n2. \n3. \n4." %>

使用EL?

有人建议将\n存储在变量中并在表达式中使用此变量。

2 个答案:

答案 0 :(得分:1)

假设你可以使用jstl标签,你可以像这样实现它。

<textarea rows="4">
<c:forTokens items="1.\n2.\n3.\n4." delims="\n" var="item">
     ${item} 
</c:forTokens>
</textarea>

答案 1 :(得分:0)

根据所使用的EL实现,您可能还需要转义反斜杠。就我而言,这适用于Apache的EL实现(如在a.o. Tomcat,WebSphere等中使用),但不适用于Oracle的EL实现(如a.o. GlassFish,WildFly等中所使用的)。 EL规范本身并不完全清楚(还)。

<textarea rows="4">
    ${o.condition ? "blah" : "1. \\n2. \\n3. \\n4."}
</textarea>

但更安全的是使用HTML实体表示法。换行符为character U+000A,可以十六进制HTML实体表示法表示为&#xa;

<textarea rows="4">
    ${o.condition ? "blah" : "1. &#xa;2. &#xa;3. &#xa;4."}
</textarea>

这样您就不依赖于目标运行时。