【问题标题】:Conditionally render other component when radiobutton is changed更改单选按钮时有条件地呈现其他组件
【发布时间】:2015-04-15 15:29:17
【问题描述】:

如果选择了单选按钮,我将尝试显示菜单。我为此目的使用了渲染属性。

型号:

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 时什么都没有显示。我怎样才能做到这一点?

【问题讨论】:

    标签: jsf radio-button jsf-1.2 conditional-rendering


    【解决方案1】:

    通常,您会为此使用 ajax,但由于您显然使用的是死的 JSF 1.x,它缺乏 ajax 的花哨,只要您不想要,您就可以使用“普通”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>
    

    【讨论】:

    • 感谢您的回答。我试过这段代码,页面根本不显示。我注意到问题出在 f:ajax 上。这可能与我正在使用的 JSF 版本有关吗? (我使用的是 1.2)?
    • 确实如此。没有人会想到现在会使用 JSF 1.x,因为它在 5 年多前已经升级到 JSF 2.0 并且已经停产了 3 年。因此,您最好始终明确指定问题中使用的 JSF 版本。我会更新答案。
    猜你喜欢
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2020-10-08
    • 2019-03-19
    相关资源
    最近更新 更多