更新有条件渲染表单的字段

时间:2012-04-27 07:07:41

标签: jsf-2 primefaces myfaces

我的问题是,我想要有条件地渲染form2。这与另一个form1的ajax更新事件冲突,该事件应该触发form2的呈现。

<h:form id="form1">
    <h:selectOneMenu id="selectedGroupId" label="#{msgs.group_group}" value="#{groupBean.selectedGroupId}">
        <p:ajax event="change" listener="#{groupBean.selectGroupEvent}" update=":form1"/>
        <f:selectItems value="#{groupBean.availableGruppen}" />
    </h:selectOneMenu>
</h:form>

<h:form id="form2" rendered="#{not empty groupBean.groupDto}">
  <p:panelGrid id="groupEditGrid">  
    ...
  </p:panelGrid>
</h:form>

有没有办法在不将渲染条件放在form2的组件中的情况下执行此操作?

感谢
强尼

1 个答案:

答案 0 :(得分:3)

您无法更新页面上没有的组件。但是您可以将表单包装在{em> 的h:panelGroup中,然后更新包装器。

示例:

<h:form id="form1">
    <h:selectOneMenu id="selectedGroupId" label="#{msgs.group_group}" 
                     value="# {groupBean.selectedGroupId}">
        <p:ajax event="change" listener="#{groupBean.selectGroupEvent}"
                update=":formWrapper"/>
        <f:selectItems value="#{groupBean.availableGruppen}" />
    </h:selectOneMenu>
</h:form>

<h:panelGroup id="formWrapper>
  <h:form id="form2" rendered="#{not empty groupBean.groupDto}">
    <p:panelGrid id="groupEditGrid">  
      ...
    </p:panelGrid>
  </h:form>
</h:panelGroup>