更改单选按钮时有条件地渲染其他组件

Conditionally render other component when radiobutton is changed

我正在尝试在选中单选按钮时显示菜单。为此,我正在使用 rendered 属性。

型号:

private int type; // +getter+setter

查看:

<h:selectOneRadio value="#{bean.type}">
    <f:selectItem itemLabel="A" itemValue="1"/>
    <f:selectItem itemLabel="B" itemValue="2"/>
</h:selectOneRadio>
<h:form id="formMention" rendered="#{bean.type == 1}">
    <h:selectOneMenu ...>
        <f:selectItems ... />
    </h:selectOneMenu>
</h:form>

当我检查 A 时没有任何显示。我该如何实现?

通常情况下,您会为此选择 ajax,但由于您显然使用的是死掉的 JSF 1.x,它缺乏 ajax 的奇思妙想,因此您不得不求助于 "plain" HTML/JS 只要你不想引入一个 ajax 有能力的组件库。其中一种方法是单击单选按钮直接提交表单。

<h:form>
    <h:selectOneRadio value="#{bean.type}" onclick="this.form.submit()">
        <f:selectItem itemLabel="A" itemValue="1"/>
        <f:selectItem itemLabel="B" itemValue="2"/>
    </h:selectOneRadio>
</h:form>
<h:form id="formMention">
    <h:selectOneMenu ... rendered="#{bean.type == 1}">
        <f:selectItems ... />
    </h:selectOneMenu>
</h:form>