如何让Tomcat输出空字符串而不是null?

时间:2010-06-22 17:10:27

标签: jsp tomcat

我刚刚从另一个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用空/空字符串替换空值?

2 个答案:

答案 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)方法完全相同。

     

指定人:
  课程print中的javax.servlet.jsp.JspWriter
  的参数:
  s - 要打印的字符串
  的抛出:
  java.io.IOException - 如果在编写

时发生错误