3 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果將值綁定到基元而不是包裝器表示形式,則會(huì)發(fā)生這種情況。圖元int始終默認(rèn)為0,而圖元double始終默認(rèn)為0.0。您想改用Integer或Double(或BigDecimal)。
例如:
public class Bean {
private Integer number;
// ...
}
然后,在處理表單提交時(shí)還要考慮兩件事。首先,您需要指示JSF將空字符串提交的值解釋為null,否則EL仍會(huì)將空字符串強(qiáng)制為0或0.0。這可以通過以下上下文參數(shù)完成web.xml:
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
其次,如果你使用的是Tomcat / JBoss的或使用Apache EL解析器蓋下的任何服務(wù)器,那么你需要指示它不強(qiáng)迫null到0或0.0在案件Number類型由以下VM參數(shù)(它unintuitively處理Number類型,如果它們是原始元素):
-Dorg.apache.el.parser.COERCE_TO_ZERO=false

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
我不同意先前給出的答案,但我認(rèn)為您可能正在尋找
<h:inputText id="number" binding="#{controller.inputBox}" value="#{controller.number}" >
<f:event type="preRenderComponent" listener="#{controller.preRenderInput}" />
</h:inputText>
在控制器內(nèi)部
private double number; // getters and setters
private UIInput inputBox; // getters and setters
public void preRenderInput() {
// if it is the first request
if(!FacesContext.getCurrentInstance().isPostback()) {
inputBox.setValue("");
}
}
JSF 2.0以上

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
在您的XHTML代碼中,假設(shè)您的輸入字段為:
<h:inputText id="newname" value="#{youAction.newName}"
style="width:130px" styleClass="form">
</h:inputText>
在您的Managed Bean Action Class中,將此字段映射為:
@ManagedBean(name="yourAction")
public class YourAction {
private String newName;
...
// Add Getter & Setter Methods
...
}
通過這樣做,你不會(huì)得到0或0.00在你輸入字段的默認(rèn)值。
添加回答
舉報(bào)