RichFaces中如何让ModalPanel在Ajax验证有错误时不关闭
RichFaces中如何让ModalPanel在Ajax验证有错误时不关闭(如必填项未填,验证器验证不通过等),验证通过了才关闭,我的解决方法如下:
第一:后台action类里面声明一变量用来控制是否关闭modalPanel
private String hideModalPanel;//加上getter、setter方法
第二:在前台按钮加上oncomplete="#{action.hideModalPanel}",当我们触发按钮提交后会触发oncomplete事件,若验证未通过则不会执行action方法,则hideModalPanel默认为null,故modalPanel不会关闭,若验证通过,则会执行action方法,我们可在action方法里面设置(当然你也可以在action再加验证,自己可控制)
setHideModalPanel("Richfaces.hideModalPanel('modalPanel的id')");
当action方法执行完成,则会执行oncomplete="#{action.hideModalPanel}",此时hideModalPanel的值为Richfaces.hideModalPanel('modalPanel的id')了,故modalPanel会关闭。
总结:主要是利用oncomplete事件(The client-side script method to be called after the request is completed),当action请求完成后触发,利用这种机制我们可轻松实现上面问题,当然oncomplete事件用处很广泛,后续我会继续探讨。