Jsf 2 p:selectOneButton默认值

Jsf 2 p:selectOneButton默认值,jsf-2,primefaces,Jsf 2,Primefaces,我有一个使用p:selectOneButton的简单用例 我基本上希望选中一个选项=true,但允许用户更改。我尝试了不同的组合,只为一个设置了值,但没有更改。 伪代码如下: <p:selectOneButton id="options" value="#{buttonBean.number}"> <f:selectItem default="true" itemLabel="Option 1" itemValue="1" /> <f:selectItem item

我有一个使用
p:selectOneButton
的简单用例

我基本上希望选中一个选项=true,但允许用户更改。我尝试了不同的组合,只为一个设置了值,但没有更改。 伪代码如下:

<p:selectOneButton id="options" value="#{buttonBean.number}">
<f:selectItem default="true" itemLabel="Option 1" itemValue="1" />
<f:selectItem itemLabel="Option 2" itemValue="2" />
<f:selectItem itemLabel="Option 3" itemValue="3" />
</p:selectOneButton>
干杯你可以试试:

<f:selectItem noSelectionOption="true"/>

将buttonBean中的number属性设置为“1”。Primefaces将显示与该值相对应的项作为默认值,并在选择其他项时对其进行更改

豆子:

要根据更改更新视图,您还可以放置一个侦听器来更新表单:

<h:form id="form-id">
....
<p:selectOneButton id="options" value="#{buttonBean.number}">
<f:selectItem default="true" itemLabel="Option 1" itemValue="1" />
<f:selectItem itemLabel="Option 2" itemValue="2" />
<f:selectItem itemLabel="Option 3" itemValue="3" />
<p:ajax update=":form-id"/>
</p:selectOneButton>

....

这将允许您使用按钮触发UI逻辑,如显示或隐藏字段。

因为我在getter中初始化后调用了我的。情况不同,请测试。我们并不总是初始化后构造中的每个值。然后,在用户提交请求后,您可以运行另一个setMethod来设置selectOneButton中的值,我实际上是在代码中这样做的

public String getNumber () {
  number = "10"; // default value
  methodThatInitializesDefaults(); // alternatively 
  return number;
}

天哪。现在我觉得自己很傻,我以为我开始尝试在bean中使用默认值,但我一定是搞砸了:-)noSelectionOption对这个组件不起作用。这(从根本上)与其他answesr有何不同?
private String number = "1";
<h:form id="form-id">
....
<p:selectOneButton id="options" value="#{buttonBean.number}">
<f:selectItem default="true" itemLabel="Option 1" itemValue="1" />
<f:selectItem itemLabel="Option 2" itemValue="2" />
<f:selectItem itemLabel="Option 3" itemValue="3" />
<p:ajax update=":form-id"/>
</p:selectOneButton>
public String getNumber () {
  number = "10"; // default value
  methodThatInitializesDefaults(); // alternatively 
  return number;
}