支持bean中SelectOneMenu的值始终为0

时间:2015-05-03 00:17:13

标签: jsf primefaces selectonemenu

我在获取所选值时遇到问题。

总是0。

XHTML文件:

function foo(a, b, c) {
    if (c === undefined) {
        if (b === undefined) {
            if (a === undefined) console.log("zero argument pass");
            else console.log("one argument pass");
        }
        else console.log('two argument pass');
    }
    else console.log('three argument pass');
}

支持bean:

<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>

1 个答案:

答案 0 :(得分:0)

此处的问题是,您的selectonemenu选定值为String,而您支持的bean中的变量为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,但可能是我错了,所以你可以尝试:

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