Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一形式的两个primefaces面板不能通过javascript连续关闭_Javascript_Jsf 2_Primefaces_Managed Bean - Fatal编程技术网

同一形式的两个primefaces面板不能通过javascript连续关闭

同一形式的两个primefaces面板不能通过javascript连续关闭,javascript,jsf-2,primefaces,managed-bean,Javascript,Jsf 2,Primefaces,Managed Bean,我有两个相同形式的primefaces面板 <p:panel id="pnlOne" widgetVar="pnlOne"> <p:ajax event="close" listener="#{createProduct.cancelAddProductCategory}"/></p:panel>' <p:panel id=pnlTwo" widgetVar="pnlTwo"> <p:ajax event="close" listener="

我有两个相同形式的primefaces面板

<p:panel id="pnlOne" widgetVar="pnlOne"> <p:ajax event="close" listener="#{createProduct.cancelAddProductCategory}"/></p:panel>'
<p:panel id=pnlTwo" widgetVar="pnlTwo"> <p:ajax event="close" listener="#{createProduct.cancelAddBrand}"/></p:panel>
javascript函数handleComplete如下

function handleComplete(xhr, status, args) {  
if(args.success) {  
    pnlOne.close();
    pnlTwo.close();
    } } 
问题是这两个面板中只有一个可以关闭。我的目的是相继关闭这两个。但它不起作用。这可能是因为javascript中的第一次关闭执行触发了ajax请求,在调用第二个面板关闭时还没有完成ajax请求吗?有什么想法吗,伙计们。非常感谢你的帮助

  • 将两个面板的可见性设置为“#{createProduct.showPanel}”

  • 在CreateProductbean中将showPanel更新为true或false

  • 对于commandButton,在两个面板上都有更新


  • 这就是解决这个问题的方法。实际上,如果用户没有显示面板,则调用不可见面板的close方法创建了上述场景。所以我只是补充一下

    如果my bean中的方法成功并显示两个面板:

    RequestContext.getCurrentInstance().addCallbackParam("success", true);    
    if (pnl1 is visible) {
        RequestContext.getCurrentInstance().addCallbackParam("pnlone", true); 
    }
    if (pnl2 is visible) {
        RequestContext.getCurrentInstance().addCallbackParam("pnltwo", true); 
    }
    
    JavaScript:

    function handleComplete(xhr, status, args) {
      if(args.success) {  
          if (args.pnlone) {  
              pnlOne.close(); 
          }
          if (args.pnltwo) {  
              pnlTwo.close();
          } 
      } 
    }  
    
    RequestContext.getCurrentInstance().addCallbackParam("success", true);    
    if (pnl1 is visible) {
        RequestContext.getCurrentInstance().addCallbackParam("pnlone", true); 
    }
    if (pnl2 is visible) {
        RequestContext.getCurrentInstance().addCallbackParam("pnltwo", true); 
    }
    
    function handleComplete(xhr, status, args) {
      if(args.success) {  
          if (args.pnlone) {  
              pnlOne.close(); 
          }
          if (args.pnltwo) {  
              pnlTwo.close();
          } 
      } 
    }