java - 在没有 JSTL 的 EL 中打印简单字符串

标签 java jsp el

我不确定是否可以做到这一点,但我正在尝试仅使用表达式语言(无 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/

相关文章:

java - 将服务器端数据传递给 JavaScript - Scriplet 或 AJAX 调用 - 哪个更好?

EL 表达式中的 JavaScript 变量

string - h :inputText which is bound to String property is submitting empty string instead of null

java - 根据标签的变量评估其主体的自定义标签

java - 在 ArrayList 中为 Java/Android 中的对象实现 uniqueID 的最佳方法

java - 使用 JCurses 从键盘读取而不按 "enter"

java - 如何使用Struts2在JSP中显示byte[]图像

java - 生成的 JSP 类文件位于何处?

java - WiFi-Direct 在游戏开发中的使用 (Android)

java - 如何在Java 8中使用stream()排序,两个 float 减法?