我不确定是否可以做到这一点,但我正在尝试仅使用表达式语言(无 JSTL)打印字符串。该字符串通常为 null,我希望将空字符串打印到 HTML,而不是单词“null”。这就是我正在尝试的(没有成功):
<%
myString = "";
myString = someMethodThatMayReturnNull(); // returns string or null
%>
<b>${myString}</b><br />
<b>${ (empty myString) ? "myString-is-empty" : "myString-is-NOT-empty" }</b><br />
我不想使用 JSTL 的原因是因为我试图对一个规模相当大的系统进行最小的更改。
最佳答案
Scriptlet 和 EL 不共享相同的变量范围。您需要准备 EL 变量作为页面、请求、 session 或应用程序范围的属性。正如您现在所拥有的,它始终为空。
<%
myString = "";
myString = someMethodThatMayReturnNull(); // returns string or null
request.setAttribute("myString", myString); // It's now available by ${myString}
%>
请注意,您通常在 Servlet 内执行 Scriptlet 部分。另请注意 EL is null-safe ,所以任何真正的 null
,即if (object == null)
通过,那么它根本就不会被打印。
或者,如果您的具体问题是它按字面打印 ${myString}
在浏览器中等等,同时它与 JSTL 一起工作 <c:out>
,那么这意味着您没有使用 JSP 2.0 兼容的 servletcontainer 或者您的 web 应用程序的 web.xml
未声明至少符合 Servlet 2.4,或者您有 isElIgnored
设置为true
。验证并修复所有问题。
关于java - 在没有 JSTL 的 EL 中打印简单字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218287/