RichFaces中如何让ModalPanel在Ajax验证有错误时不关闭

本文介绍了三种确保ModalPanel在Ajax请求过程中不被关闭的方法。第一种方法通过判断是否有message来决定是否关闭ModalPanel;第二种方法适用于使用Facelets的情况;第三种方法则是将ModalPanel的显示状态与conversation中的变量绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址http://winnerlxh.iteye.com/blog/770410

ModalPanel在有Ajax刷新请求的时候,一般会关闭,比如验证错误的时候
我自己的解决办法是让ModalPanel的现实与否不与JS有关,完全用conversation中的某个变量想关联,这样当一个ModalPanel显示以后,无论什么Ajax刷新请求都不回让ModalPanel关掉,除非我让他关掉

网上还有两种解决方案,现列举如下。

第一种方法:
<ui:define name="body">
     <f:verbatim>
          <a href="javascript:Richfaces.showModalPanel('_panel',{left:'auto', top:'auto'})">
               Show Modal Panel
          </a>
     </f:verbatim>
     <rich:modalPanel id="_panel">
          <f:facet name="header">
               <h:outputText value="test"></h:outputText>
          </f:facet>
          <h:form id="mpform">
               <a4j:outputPanel ajaxRendered="true">
                    <h:messages id="error"></h:messages>
               </a4j:outputPanel>
               <h:inputText value="#{bean.property}" required="true"></h:inputText>
               <a4j:commandLink value="click" oncomplete="windowclose();"
                    reRender="test" ></a4j:commandLink>
          </h:form>
     </rich:modalPanel>
     <script type="text/javascript">
          //<![CDATA[
               function windowclose(){
                    if (document.getElementById('mpform:error')==null){
                         Richfaces.hideModalPanel('_panel');
                    };
               };
//\]\]\>

     </script>
</ui:define>
这种方法的思想是,在关闭ModalPanel的时候判断是否有message在里面,如果没有,就关掉,如果ModalPanel里面有message,就让它继续显示着。

第二种方法:

这种方法的前提是,使用Facelets

在模板里面增加这段代码:
<a4j:outputPanel ajaxRendered="true">
   <h:form style="display:none" prependId="false">
        <h:inputHidden id="maximumSeverity" value="#{facesContext.maximumSeverity.ordinal}"/>
    </h:form>             
</a4j:outputPanel>

然后在你需要加ModalPanel的页面增加以下这段JS代码:
function ajaxRequestContainsErrors() {
    return document.getElementById("maximumSeverity").value == "2";
}
作用是检查是否包含错误消息
最后在具体的连接或者按钮上增加相应的处理事件:
<a4j:commandButton value="Save" action="#{myController.save}"
     oncomplete="if (!ajaxRequestContainsErrors()) Richfaces.hideModalPanel('myModalPanelId');"/>

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值