如何根据h:selectOneRadio设置的布尔值有条件地渲染h:panelGroup

时间:2012-09-25 14:41:59

标签: ajax jsf

我使用JSF2中的<h:selectOneRadio>组件来创建radiobuttons。一个是“是”,另一个是“否”。请注意,我不能在此处使用复选框。

在我的支持bean中,我有一个boolean属性。当选择“是”时,我希望该布尔值为true,当选择“否”时,我希望它为false。我怎样才能做到这一点?

这不能做到:

<h:selectOneRadio value="#{bean.bool}">
    <f:selectItem itemValue="false" itemLabel="Yes" />
    <f:selectItem itemValue="true" itemLabel="No" />
    <f:ajax event="change" render="theDiv" />
</h:selectOneRadio>
<h:panelGroup layout="block" id="theDiv" rendered="#{bean.bool}">
....
</panelGroup>

1 个答案:

答案 0 :(得分:0)

JSF在网络服务器中运行并生成HTML。 Ajax / JavaScript在webbrowser中运行,并处理JSF生成的HTML输出。您无法更新JSF组件的HTML表示形式,而JSF组件本身从未呈现为HTML。您需要ajax更新始终呈现的JSF组件的HTML表示:

<h:selectOneRadio value="#{bean.bool}">
    <f:selectItem itemValue="false" itemLabel="Yes" />
    <f:selectItem itemValue="true" itemLabel="No" />
    <f:ajax render="foo" />
</h:selectOneRadio>
<h:panelGroup id="foo">
    <h:panelGroup layout="block" id="theDiv" rendered="#{bean.bool}">
    ...
    </panelGroup>
</h:panelGroup>

(请注意,我删除了event="change",因为这是错误的,默认的已经是正确的)

另见: