这是我对oneRadio的想法
<h:selectOneRadio value="#{controller.myboolean}">
<f:selectItem itemValue="#{true}" itemLabel="Yes"/>
<f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneRadio>
这里使用commandLink:
<h:commandLink value="YES" action="#{controller.setMyboolean(true)}"/>
<br/>
<h:commandLink value="NO" action="#{controller.setMyboolean(false)}"/>
在我的应用程序中,我想用<h:selectOneRadio>
显示或禁用我的表格。例如,如果我选择了第一个radioButton,则会显示该表。我不是要点击<h:commandButton>
来更改值myboolean
。因此,我的申请的例外反应必须像<h:commandLink>
。我点击它,值改变,表格显示。但就我而言,我想使用<h:selectOneRadio>
答案 0 :(得分:1)
我建议你使用primefaces扩展。对于某些布尔值,这是一些很好的组件......喜欢: http://fractalsoft.net/primeext-showcase-mojarra/views/triStateCheckbox.jsf
你也可以使用primefaces的booleanButton,如: http://www.primefaces.org/showcase/ui/selectBooleanButton.jsf
反正, 如果您可以灵活使用其他组件,我希望这对您有所帮助 然后selectOneRadio ......如果你有自由的话 将更多依赖项添加到项目中..
再见
答案 1 :(得分:0)
除非你在幕后设置,否则问题很可能是你需要实现一个转换器来处理字符串“true”和“false”到boolean
之间的转换。在commandLink
中,EL中指定的动作将布尔值传递给您的函数。但是,在selectOneRadio
示例中,您要提交一个字符串。
答案 2 :(得分:-1)
这非常好用:
<h:selectOneRadio value="#{controller.myboolean}" valueChangeListener="#{controller.save}" immediate="true" onchange="this.form.submit()">
<f:selectItem itemValue="#{true}" itemLabel="Yes"/>
<f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneRadio>
并使用此ChangeEvent方法():
public void speichereRadioButtons(ValueChangeEvent vce){
boolean temp=(Boolean) vce.getNewValue();
setmyBoolean(temp);
FacesContext.getCurrentInstance().renderResponse();
}