function closeModalPanel(panelId){
Richfaces.hideModalPanel(panelId);
}
下面方法多了一个if验证。
function closeModalPanelByFlag(panelId,flag){
if(isNull(flag)){
flag = jQuery(":hidden[id$='success']").val();
}
if(flag=='true'){
Richfaces.hideModalPanel(panelId);
}
}
这两个方法在我们项目用都是用来关闭,窗口的。下面是jsp页面调用上面方法的代码:
<a4j:commandButton value="#{lbl.Save }" 
                     immediate="true" action="#{userBean.save }" styleClass="button white" reRender="panel"
                     onclick="if(!checkRequiredFields({panelId:'saveOrUpdatePanel',isPanel:true})){return;}else{if(!check()){return;}}"
                     oncomplete="Richfaces.closeModalPanelByFlag('saveOrUpdatePanel')">
                     </a4j:commandButton>
下面的代码的js应该怎么理解??
onclick="if(!checkRequiredFields({panelId:'saveOrUpdatePanel',isPanel:true})){return;}else{if(!check()){return;}}"

解决方案 »

  1.   

    oncomplete 是用于AJAX组件的回调处理.在点击事件中,先检查指定的Panel里的数据是否满足"必须输入的字段"的要求,如果有必须输入但没输入的项目,就退出,否则如果所有输入的项目没有通过输入是否合理的check()验证,也退出.如果没有退出,则会执行action="#{userBean.save }" 指定的userBean行为,把输入的数据通过AJAX进行保存.保存成功之后会调用oncomplete里的Richfaces.closeModalPanelByFlag('saveOrUpdatePanel')
      

  2.   

    下面方法多了一个if验证。
    function closeModalPanelByFlag(panelId,flag){
    if(isNull(flag)){
    flag = jQuery(":hidden[id$='success']").val();
    }
    if(flag=='true'){
    Richfaces.hideModalPanel(panelId);
    }
    }
    多的FLAG和IF验证,就是用于AJAX保存时,返回是否成功.如果保存还没完成,这里就关闭是不允许的,只有保存完成返回成功就是TRUE时,才关闭.就是这个作用.