我刚刚从另一个Servlet / JSP引擎切换到Tomcat 6.0.26。以前,null值将打印为空String。但是,Tomcat将空值打印为“null”。
<% String str = null; %>
The value of str is <%= str %>.
此输出
The value of str is null.
如何让Tomcat用空/空字符串替换空值?
答案 0 :(得分:4)
这是默认和预期的行为。显然以前的服务器有一些专有的配置设置。在Tomcat中没有任何想法。
无论如何, scriptlets 是一种复古技术,十年来不鼓励使用它。它已被taglibs(如JSTL)和Expression Language (EL)以及Servlet作为控制器结合使用。
E.g。在Servlet的doGet()
:
String str = null;
request.setAttribute("str", str);
request.getRequestDispatcher("page.jsp").forward(request, response);
和page.jsp
:
The value of str is ${str}
如果值等于null
,EL将默认不打印,而 scriptlet 表达式(<%= %>
)默认打印String#valueOf()
返回的任何内容。
另见:
答案 1 :(得分:2)
看起来你想在你的代码中解决这个问题,因为在tomcat中似乎没有一个选项来关闭此行为。 (显然是在weblogic中,如果你正在使用它 - 请参阅“printNulls”)。
来自Tomcat's JspWriterImpl#print()
的javadoc
public void print(java.lang.String s)
throws java.io.IOException
打印一个字符串。如果参数为
null
,则打印字符串"null"
。否则,字符串的字符将根据平台的默认字符编码转换为字节,这些字节的编写方式与write(int)
方法完全相同。指定人:
时发生错误
课程javax.servlet.jsp.JspWriter
的参数:强>
s
- 要打印的字符串
的抛出:强>
java.io.IOException
- 如果在编写