0

我的问题是,我想有条件地渲染 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 的组件中的情况下做到这一点?

谢谢
强尼

4

1 回答 1

3

您不能更新不在您页面上的组件。但是您可以将您的表单包装在一个没有按条件渲染的表单中,并改为更新包装器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>
于 2012-04-27T09:39:08.153 回答