JSF selectOneRadio / commandLink

时间:2012-12-22 14:55:57

标签: java jsf jsf-2 selectoneradio

这是我对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>

3 个答案:

答案 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示例中,您要提交一个字符串。

有关详细信息,请查看:http://download.oracle.com/otn_hosted_doc/jdeveloper/j2ee101302/jsf_apps/eventvalidate/sf_avc_converters.html

答案 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();
}