在JSF中从Managed Bean更改属性显示类型

时间:2013-06-11 09:42:56

标签: jsf jsf-2

在我的场景中,我需要使用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)将呈现为标签。 有可能吗?请指导我......

1 个答案:

答案 0 :(得分:2)

是的!这个有可能!将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