我剛從不同的Servlet/JSP引擎切換到Tomcat 6.0.26。以前,空值將作爲空字符串打印出來。但是,Tomcat正在將空值打印爲「null」。如何讓Tomcat輸出空字符串而不是null?
<% String str = null; %>
The value of str is <%= str %>.
此輸出
The value of str is null.
我怎樣才能得到的Tomcat與空/空字符串替換空?
我剛從不同的Servlet/JSP引擎切換到Tomcat 6.0.26。以前,空值將作爲空字符串打印出來。但是,Tomcat正在將空值打印爲「null」。如何讓Tomcat輸出空字符串而不是null?
<% String str = null; %>
The value of str is <%= str %>.
此輸出
The value of str is null.
我怎樣才能得到的Tomcat與空/空字符串替換空?
看起來像你想在代碼中解決這個問題,因爲在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
- 如果發生錯誤,而寫
這是默認和預期的行爲。顯然以前的服務器有一些專有的配置設置。想起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}
EL將默認打印咱這值等於null
而小腳本表達(<%= %>
)默認打印任何String#valueOf()
回報。
也參見:
感謝我的固定格式BalusC :-) – Jubal 2010-06-22 18:18:18