我有一个简单的用例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;
欢呼声
您可以尝试:
<f:selectItem noSelectionOption="true"/>
或者,我会做的是,在number
buttonBean
方法中初始化@PostConstruct
:
@PostConstruct
private void postConstruct() {
number = 1;
}
将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逻辑,例如显示或隐藏字段。