2015-05-03 55 views
1

我在獲取選定值時遇到問題。SelectOneMenu的值在支持bean中始終爲0

它始終爲0。

XHTML文件:

<p:selectOneMenu id="SelectDicimalsInput5" value="#{auction.money}"> 
    <f:selectItem itemLabel="1" itemValue="1"/> 
    <f:selectItem itemLabel="5" itemValue="5"/> 
    <f:selectItem itemLabel="10" itemValue="10"/> 
    <f:selectItem itemLabel="100" itemValue="100"/> 
    <f:selectItem itemLabel="500" itemValue="500"/> 
    <f:selectItem itemLabel="1000" itemValue="1000"/> 
</p:selectOneMenu> 

支持bean:

@ManagedBean (name="auction") 
@RequestScoped 
public class AuctionBean implements Serializable { 
    private int money; 
    //getters & setters ... 
} 
+1

'0'是原始'int'('private int money;')的默認值。您是否在回帖後獲得'0'?改爲使用'@ ViewScoped' bean('javax.faces.bean.ViewScoped')。 – Tiny

+0

仍然有同樣的問題。 –

+0

你有周圍的'h:form'嗎? –

回答

0

這裏的問題是,你的選擇selectonemenu值是String和你的變量在支持豆是一個int

所以這個選擇的值不能轉換爲int,這就是爲什麼你總是0基本類型int的defailt價值在這裏。

您對此String轉換爲int相匹配的變量類型,你可以使用一個IntegerConverter

<f:convertNumber integerOnly="true" /> 

,你的代碼將是:

<p:selectOneMenu id="SelectDicimalsInput5" value="#{auction.money}"> 
    <f:selectItem itemLabel="1" itemValue="1"/> 
    <f:selectItem itemLabel="5" itemValue="5"/> 
    <f:selectItem itemLabel="10" itemValue="10"/> 
    <f:selectItem itemLabel="100" itemValue="100"/> 
    <f:selectItem itemLabel="500" itemValue="500"/> 
    <f:selectItem itemLabel="1000" itemValue="1000"/> 
<f:convertNumber integerOnly="true" /> //This converter should be added 
</p:selectOneMenu> 

還要注意,有converter="javax.faces.Integer"屬性,可用於<h:selectOneMenu>元素,但我認爲它不被primefaces支持,但可能是我錯了,所以你可以n試試:

<p:selectOneMenu id="SelectDicimalsInput5" converter="javax.faces.Integer" value="#{auction.money}"> 
+0

當組件綁定到類型爲「int」或「Integer」的屬性時,推斷'javax.faces.Integer'轉換器。 – Tiny

+0

是的,但我們在這裏可以推斷的是,該值並不是來自網頁,我認爲這是一個轉換問題。 –