如何在 EL 字符串文字中使用换行符?
How to use new line character inside EL string literal?
我需要使用 EL 在文本区域内打印多行文本。当我这样做时:
<textarea rows="4">
${o.condition ? "blah" : "1. \n2. \n3. \n4."}
</textarea>
我得到:
Unable to compile class for JSP
什么等同于
<%=o.getCondition() ? "blah" : "1. \n2. \n3. \n4." %>
使用 EL?
有人建议将 \n
存储在一个变量中并在表达式中使用该变量。
假设你可以使用jstl标签,你可以这样实现。
<textarea rows="4">
<c:forTokens items="1.\n2.\n3.\n4." delims="\n" var="item">
${item}
</c:forTokens>
</textarea>
根据所使用的 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 实体表示法表示为 

.
<textarea rows="4">
${o.condition ? "blah" : "1. 
2. 
3. 
4."}
</textarea>
这样您就不会依赖于目标运行时。
我需要使用 EL 在文本区域内打印多行文本。当我这样做时:
<textarea rows="4">
${o.condition ? "blah" : "1. \n2. \n3. \n4."}
</textarea>
我得到:
Unable to compile class for JSP
什么等同于
<%=o.getCondition() ? "blah" : "1. \n2. \n3. \n4." %>
使用 EL?
有人建议将 \n
存储在一个变量中并在表达式中使用该变量。
假设你可以使用jstl标签,你可以这样实现。
<textarea rows="4">
<c:forTokens items="1.\n2.\n3.\n4." delims="\n" var="item">
${item}
</c:forTokens>
</textarea>
根据所使用的 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 实体表示法表示为 

.
<textarea rows="4">
${o.condition ? "blah" : "1. 
2. 
3. 
4."}
</textarea>
这样您就不会依赖于目标运行时。