ボタンのCSJS onclickイベント内にいくつかのSSJSがあります。ページの読み込み中にこの SSJS が実行されないようにする方法はありますか?
ありがとう
これは、 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>