【问题标题】:SelectOneMenu's value is always 0 in the backing beanSelectOneMenu 的值在 backing bean 中始终为 0
【发布时间】:2015-05-03 00:17:12
【问题描述】:

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

它总是 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>

支持豆:

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

【问题讨论】:

  • 0 是原始int (private int money;) 的默认值。您在回发时收到0 吗?取而代之的是 @ViewScoped bean (javax.faces.bean.ViewScoped)。
  • 还是有同样的问题。
  • 你周围有h:form吗?
  • 尝试&lt;p:ajax event="change" /&gt; 提交每个更改事件的值。
  • 何时评估为0?什么时候通过AJAX同步或者部分提交表单?我认为使用视图范围的托管 bean 重现问题的可能性很小。

标签: jsf primefaces selectonemenu


【解决方案1】:

这里的问题是您的selectonemenu 选择值是String,而您在支持bean 中的变量是int

所以这个选定的值不能转换为int,这就是为什么你总是在这里得到0作为原始类型int的默认值

您必须将此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" 属性可以与&lt;h:selectOneMenu&gt; 元素一起使用,但我认为primefaces 不支持它,但可能是我错了,所以你可以试试:

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

【讨论】:

  • 当组件绑定到 intInteger 类型的属性时,会推断出 javax.faces.Integer 转换器。
  • 是的,但是我们在这里只能推断出价值不是从网页中获取的,我认为这是一个转换问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多