我有一个简单的用例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;
干杯
答案 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;
}