【问题标题】:Two primefaces panel in the same form cannot be closed via javascript successively无法通过javascript连续关闭相同形式的两个primefaces面板
【发布时间】:2012-04-21 02:46:25
【问题描述】:

我在一个表单中有两个 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>

我有另一个命令按钮,它将在其 oncomplete 属性上调用面板关闭函数。

<p:commandButton id="btnadd" value="#{bundle.LabelSave}" update=":forminput :formcollector" 
action="#{createProduct.createNew}" oncomplete="handleComplete(xhr, status, args)">

我在backing bean中设置成功回调参数如下;

RequestContext.getCurrentInstance().addCallbackParam("success", true);

和javascript函数handleComplete如下;

function handleComplete(xhr, status, args) {  
if(args.success) {  
    pnlOne.close();
    pnlTwo.close();
    } } 

问题是这两个面板中只有一个可以关闭。我的目的是相继关闭两者。但它不起作用。可能是因为 javascript 中的第一次关闭执行触发了一个 ajax 请求,在调用第二个面板关闭时还没有完成 ajax 请求?任何想法的家伙。非常感谢您的帮助。

【问题讨论】:

    标签: javascript jsf-2 primefaces managed-bean


    【解决方案1】:
    1. 将两个面板的可见性设置为“#{createProduct.showPanel}”

    2. 在 createProduct bean 中将 showPanel 更新为 true 或 false。

    3. 对于 commandButton,在两个面板上都有更新。

    【讨论】:

      【解决方案2】:

      这是解决这个问题的方法。实际上,如果用户不显示面板,并且为该不可见面板调用 close 方法会创建上述场景。所以我只是补充。

      如果我的 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();
            } 
        } 
      }  
      

      【讨论】:

        猜你喜欢
        • 2013-09-19
        • 2023-03-24
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多