0

Rich:modalPanel内部に別のフォームがあり、下部に2つのボタンがあるフォームを開くボタンがあります。CloseSave

  • Close: onclick="#{rich:component('mp')}.hide()modalPanel を実行して非表示にします。
  • Save: フォームのフィールドを検証し、完全でない場合はエラーを表示し、フォームが正しい場合はデータベースに保存します。フォームをリセットしますが、Rich:modalPanel.

Rich:modalPanelフォームが正常で保存された場合にのみ閉じたいのですが、できません。私は試しました:

Javascript の挿入:

<a4j:commandButton value="${msg.guardar}" styleClass="boton" reRender="personaForm" action="#{persona.guardarAuxiliar}" onclick="#{rich:component('mp')}.hide()"/><br />

<a4j:commandButton value="${msg.guardar}" styleClass="boton" reRender="personaForm" action="#{persona.guardarAuxiliar}" oncomplete="#{rich:component('mp')}.hide()"/><br />

RichFaces のみを使用:

<a4j:commandButton value="${msg.guardar}" styleClass="boton" reRender="personaForm" action="#{persona.guardarAuxiliar}">
    <rich:componentControl for="mp" operation="hide" event="onclick" />
</a4j:commandButton><br />

<a4j:commandButton value="${msg.guardar}" styleClass="boton" reRender="personaForm" action="#{persona.guardarAuxiliar}">
    <rich:componentControl for="mp" operation="hide" event="oncomplete" />
</a4j:commandButton><br />

ただし、このコードは、保存が完了した場合だけでなく、常に modalPanel を閉じます (または非表示にします)。保存に問題がない場合にのみ、この modalPanel を閉じる別の方法はありますか?

エラーポップアップは次のとおりです。

<a4j:outputPanel ajaxRendered="true">
    <h:messages id="error" styleClass="error"></h:messages>
</a4j:outputPanel> 

 <rich:modalPanel id="panel2" width="350" height="100" zindex="4000" showWhenRendered="${persona.hayErrores || persona.exito}">
    <f:facet name="header">
        <h:panelGroup>
            <h:outputText value="${msg.error}" rendered="#{persona.hayErrores}"></h:outputText>
            <h:outputText value="${msg.info}" rendered="#{persona.exito}"></h:outputText>
        </h:panelGroup>
    </f:facet>
    <f:facet name="controls">
        <h:panelGroup>
            <h:graphicImage value="/estilos/general/img/iconos/close.png" style="cursor:pointer" id="hidelink2"/>
            <rich:componentControl for="panel2" attachTo="hidelink2" operation="hide" event="onclick"/>
        </h:panelGroup>
    </f:facet>
     <a4j:outputPanel ajaxRendered="true">
        <h:outputText value="#{persona.listaErrores}" rendered="#{persona.hayErrores}" styleClass="error"/>
        <h:outputText value="#{msg.personaExito}" rendered="#{persona.exito}"/>
      </a4j:outputPanel>
</rich:modalPanel>
4

2 に答える 2

0

のoncomplete属性を使用できa4j:commandButtonます

<a4j:commandButton action="#{persona.guardarAuxiliar}"
                    oncomplete="Richfaces.hideModalPanel('mp')"
                    value="#{msg.guardar}" reRender="personaForm" />

または条件付き

oncomplete="if (#{!yourAction.hasErrors}) Richfaces.hideModalPanel('mp')"

検証エラーをチェックする古典的なケース

oncomplete="if (#{facesContext.maximumSeverity == null}) {Richfaces.hideModalPanel('mp');}"
于 2015-09-08T18:40:10.083 に答える