2010-06-22 100 views
1

我剛從不同的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與空/空字符串替換空?

回答

2

看起來像你想在代碼中解決這個問題,因爲在tomcat中似乎沒有選項可以關閉此行爲。 (這顯然是在weblogic中,如果這就是你正在使用的 - 請參閱「printNulls」)。

Tomcat's JspWriterImpl#print()

的javadoc

public void print(java.lang.String s)
throws java.io.IOException

打印的字符串。如果參數是null,則打印字符串"null"。否則,根據平臺的默認字符編碼將字符串的字符轉換爲字節,並且這些字節的寫入方式與write(int)方法完全相同。

指定者:
printjavax.servlet.jsp.JspWriter
參數:
s - 字符串要打印
拋出:
java.io.IOException - 如果發生錯誤,而寫

+0

感謝我的固定格式BalusC :-) – Jubal 2010-06-22 18:18:18

3

這是默認和預期的行爲。顯然以前的服務器有一些專有的配置設置。想起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()回報。

參見: