0

我在按钮的 CSJS onclick 事件中有一些 SSJS。有什么办法可以防止这个 SSJS 在页面加载期间执行?

谢谢

4

1 回答 1

1

这可以通过检查facesContext.getRenderResponse()来完成。如果为true,则重新加载页面,否则为false。该标志未正确设置,但为您提供了一种简单的方法来检查页面是否已加载。

这是一个示例 XPage:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
   <xp:button value="Reload CSJS" id="buttonReloadCSJS">
      <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
         <xp:this.script>
            <![CDATA[#{javascript:
               facesContext.getRenderResponse()?"alert('NotOnLoad');":"alert('OnLoad')";
            }]]>
         </xp:this.script>
      </xp:eventHandler>
   </xp:button>
</xp:view>

如果您打开 XPage 并单击该按钮,该页面将被重新加载并且您将获得另一个 CSJS 代码。

编辑:
这是另一种仅在按钮部分刷新时计算代码的方法:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

   <xp:div id="refreshMe">
      <xp:button value="Reload CSJS" id="buttonReloadCSJS">
         <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="refreshMe">
            <xp:this.script>
               <![CDATA[#{javascript:
                  var ajax = new com.ibm.xsp.ajax.AjaxUtil();
                  if( ajax.isAjaxPartialRefresh(facesContext) == true){
                     return "alert('Refreshed')";
                  }
               }]]>
            </xp:this.script>
         </xp:eventHandler>
      </xp:button>
   </xp:div>

</xp:view>
于 2012-11-15T09:05:12.263 回答