p:selectOneButton默认值

时间:2012-09-19 11:48:49

标签: jsf-2 primefaces

我有一个简单的用例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>

我试过javascript无济于事,而不是因为我没有在服务器端更新它所以我期望它能够正常工作......

document.getElementById('options:0').checked = true;

干杯

3 个答案:

答案 0 :(得分:0)

你可以尝试:

<f:selectItem noSelectionOption="true"/>

或者,我会做什么,在number buttonBean方法中初始化@PostConstruct

@PostConstruct
private void postConstruct() {
    number = 1;
}

答案 1 :(得分:0)

将buttonBean中的number属性设置为“ 1”。 Primefaces将显示与该值对应的项目作为默认值,如果您选择其他项目,则将其更改。

Bean:

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>

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

答案 2 :(得分:-1)

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

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