在JSF中选中另一个单选按钮时显示隐藏的单选按钮

时间:2014-11-10 19:27:27

标签: jsf jsf-2.2

我试图隐藏/显示基于UI事件的JSF面板。 更具体地说,我有很多单选按钮, 每个单选按钮都应存在于自己的面板中。 我需要根据单选按钮单击使隐藏面板可见。 我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

不应使用css属性visibility,而应该考虑渲染单选按钮 - 或者不是 - 取决于第一个单选按钮的值。

请记住,你不能update一个尚未渲染的组件,只能是它的父组件:

<h:form>
    <h:panelGroup id ="grp1">
        <h:selectOneRadio value="#{testController.radio1}">
            <f:selectItem itemValue="show" itemLabel="Show next Radio" />
            <f:selectItem itemValue="hide" itemLabel="Hide next Radio" />
            <f:ajax render="grp2"></f:ajax>
        </h:selectOneRadio>
    </h:panelGroup>
    <h:panelGroup id ="grp2">
      <h:selectOneRadio value="#{testController.radio2}" rendered="#{testController.radio1 eq 'show'}">
            <f:selectItem itemValue="show" itemLabel="Show next Radio" />
            <f:selectItem itemValue="hide" itemLabel="Hide next Radio" />
        </h:selectOneRadio>
    </h:panelGroup>
</h:form>

用烤豆

@Named
@ViewScoped
public class TestController implements Serializable {
    private String radio1;
    private String radio2;

    //+getter and setter
}