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');"/>
分享到:
相关推荐
详细的介绍了RichFaces中的Ajax组件的使用配置以及组件的使用方法。是为初学者了解ajax组件提供一点方便
详细的阐述了RichFaces组件中如何实现验证码的刷新
关于richfaces的一些比较好的资料,希望大家看了能有收获
seam+jsf+richfaces+ajax4jsf相关电子书,做个备份吧!网上也很多的!
JSF+RichFaces(Ajax4jsf)框架示例
richfaces中文开发文档 纯中文 适合维护老项目的人
JSF商品管理项目包含 XHTML RichFaces AJAX 里面有商品的增删查改操作
包括seam的中文手册,jsf中文教程,richfaces常用标签的讲解,ajax4jsf常用标签讲解
richfaces-ui-3.1.2的组件。AJAX基于jsf。全程是JBoss RichFaces ,不知道为什么在Exadel上找不到免费下载,还不清楚和Exadel RichFaces在代码中的关系到了什么程度。
RichFaces组件简介,复合组件,日期控件,Ajax标签, 轻松实现。RichFaces组件简介,复合组件,日期控件,Ajax标签, 轻松实现。RichFaces组件简介,复合组件,日期控件,Ajax标签, 轻松实现。
Richfaces标签 简介Richfaces标签相关内容 初学者认知
richfaces标签学习笔记richfaces标签学习笔记richfaces标签学习笔记richfaces标签学习笔记
RichFaces是一个开源框架,它不借助于JavaScript而增加Ajax能力到存在的JSF应用程序中。
内带最新的richfaces jar包,轻松实现多文件的上传
这是richfaces 3.3.1的用户手册PDF版
在对界面了解的同时,也对Richfaces组件也能有进一步的了解。 里面的英文理解起来很简单,可以提高英文阅读水平。 对于richfaces与ajax的诸多关系,也做了介绍。是比较基础的文档。 找到适合自己的文档不容易。
教会如何使用richfaces,及richfaces应用
jsf中richfaces的jar包及源文件等jsf中richfaces的jar包及源文件等jsf中richfaces的jar包及源文件等
richfaces3.1.4版的demo,运行在jboss和tomcat5.5下
该框架是一个能在现有的页面增加Ajax的功能的组件库,所以你不需要写任何JavaScript代码或用新的Ajax工具集(widget)取代现有的组件。RichFaces具有页面范围(page-wide)的Ajax支持,而不是传统的组件范围(component-...