2015-09-08 142 views
0

我有一个窗体,其中有一个按钮,用于打开Rich:modalPanel,其中另一个窗体和底部的两个按钮; CloseSave关闭Rich:modalPanel保存正确

  • Close:执行onclick="#{rich:component('mp')}.hide()并隐藏模式面板。
  • 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 /> 

但是,这些代码总是关闭(或隐藏)模式面板,不仅如果保存完成。只有在保存好的情况下才能关闭这个模式面板的另一种方法是什么?

错误弹出是:

<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> 

回答

0

解决:

只需加入另一个​​与表示验证在弹出消息的条件。

// If its wrong, only closes this popup 
<rich:componentControl for="panel2" attachTo="hidelink2" operation="hide" event="onclick" rendered="#{persona.hayErrores}" /> 
// If its ok, closes this popup and 'mp' modalPanel 
<rich:componentControl for="panel2,mp" attachTo="hidelink2" operation="hide" event="onclick" rendered="#{persona.exito}" /> 
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');}"