RichFaces中如何让ModalPanel在Ajax验证有错误时不关闭
来源:互联网 发布:淘宝化妆品哪家是正品 编辑:程序博客网 时间:2024/06/05 18:39
原文地址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');"/>
- RichFaces中如何让ModalPanel在Ajax验证有错误时不关闭
- Richfaces 中<rich:modalPanel />开启与关闭方式
- richfaces modalPanel例子
- richfaces的modalPanel用法注意事项
- richfaces标签modalPanel的隐藏
- richfaces modalPanel 添加滚动条
- 如何在jsp中有验证码
- 在eclispe中关闭不常用的验证
- 在Richfaces中使用jQuery
- 如何在对话框中响应回车键而不关闭对话框
- JSF richfaces的dataTable组件中filter在IE和Firefox下不兼容的问题
- 如何让背景图片不重复填充在div中
- 如何让NFC在开机时默认关闭
- 让FormClosing事件只在用户关闭时触发,系统关闭不触发
- 【SHELL】如何让一个脚本有错误时停下来?
- 【SHELL】如何让一个脚本有错误时停下来?
- JS关闭窗口而不弹出提示 如何让有滚动条的层自动滚动到最下
- 让AlertDialog在点击按钮后不消失、不关闭
- Linux shell脚本的字符串截取
- 非阻塞connect()和accept()
- SQL删除重复数据只保留一条
- poj 3427 Ecology tax
- String.Format用法
- RichFaces中如何让ModalPanel在Ajax验证有错误时不关闭
- socket端口数量限制问题
- Modulation and Coding Scheme - MCS Index Table
- linux下mysql的root密码忘记解决方
- 位运算简介及实用技巧
- php自动加载
- NSTimer的使用
- 软件开发的 23种设计模式
- QT通过IP地址定位地址