【问题标题】:Change Attribute Display Type from Managed Bean in JSF从 JSF 中的托管 Bean 更改属性显示类型
【发布时间】:2013-06-11 09:42:55
【问题描述】:

在我的场景中,我需要使用 ajax 从托管 bean 更改属性显示类型

<h:inputText id="text1" value="#{managedBean.value}" />
<h:selectOneRadio value="#{managedBean.option}">
    <f:selectItem itemValue="Yes" itemLabel="Yes" />
    <f:selectItem itemValue="No" itemLabel="No" />
    <f:ajax listener="#{managedBean.changeAttrDisplayType}" event="click" render="text1"/>
</h:selectOneRadio>

如果我在单选按钮中单击是,则属性(id=text1)将呈现为文本框,如果我单击否,则属性(id=text1)将呈现为标签。 有可能吗?请指导我...

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:

    是的!这个有可能!将您的h:inputTexth:outputLabel 放入h:panelGroup 并在ajax 事件中重新渲染h:panelGroup。将您要渲染的条件放在相应的rendered 属性中,如下所示:

                <h:panelGroup id="changingPanel">
                    <h:outputLabel id="id1"
                                  rendered="#{managedBean.option == 'Yes'}"
                                  value="This is label"/>
                    <h:inputText id="id2" value="#{managedBean.input}"
                                  rendered="#{managedBean.option == 'No'}" />
                </h:panelGroup>
    
                <h:selectOneRadio value="#{managedBean.option}">
                    <f:selectItem itemValue="Yes" itemLabel="Yes" />
                    <f:selectItem itemValue="No" itemLabel="No" />
                    <f:ajax event="click" render="changingPanel"/>
                </h:selectOneRadio>
    

    假设您想在选择“是”时显示outputLabel,在选择“否”时显示inputText

    【讨论】:

    • @Luiggi:实际上,这里演示的工作不需要监听器(event 属性也是如此,但除此之外)。
    猜你喜欢
    • 2012-12-23
    • 2012-06-30
    • 2013-12-23
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2012-05-22
    • 2015-03-11
    相关资源
    最近更新 更多