我在获取所选值时遇到问题。
总是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>
答案 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}">