2011-09-20 35 views
5

我有一個<h:inputText>它接受一個long值這樣避免默認的0長值至h中顯示:inputText的

<h:inputText value="#{ServiceTable.ID}" /> 

的屬性聲明這樣

public class ServiceTable { 

    private long ID; 

    // Getter and setter for ID. 
} 

當我打開頁面,我總是在文本框中看到0。我怎樣才能避免它?我只需要一個空的文本框。我正在使用JSF 1.2。

回答

8

使用Long而不是long。它默認爲null

private Long ID; 

而且,如果你正在運行的Tomcat 6.0.16或更新或它的叉,那麼你需要添加以下VM參數服務器啓動參數,以及禁用原語及其包裝的EL脅迫:

-Dorg.apache.el.parser.COERCE_TO_ZERO=false 
+0

感謝BalusC的回覆。我經常閱讀你的博客。它對於新人來說是非常豐富和有用的。你能解釋我有什麼不同嗎? – Sreeram

+0

'long'是聲明爲類/實例變量時具有默認值「0」的原語。 'Long'是一個默認值爲'null'的包裝對象。這只是基本的Java。另請參閱有關基本類型的Java教程:http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – BalusC

+0

感謝您的幫助BalusC.It的工作。您可以告訴在哪裏添加上述命令? – Sreeram

1

太可怕了!許多開發人員無法訪問實際的服務器,有時您不能訪問客戶端並告訴他:「停止服務器並使用此啓動選項重新啓動所有服務器」。

apache團隊中的人怎麼沒有想過這個?

如果您處於這種情況 - 像我一樣 - 另一個解決方案是將字段作爲字符串並在後臺bean中手動解析。