私がこの質問をしたのは少し前のことです。これは、csjsによって引き起こされた完全な更新後にプロパティバンドルを更新することに関するものでした。context.redirectToPageにつながるURLパラメーターを使用して解決しました。
これで、jqueryベースのjqGridを含むxPageができました。これは、viewScopeからJSONデータを含む文字列を受け取り、そのデータをテーブルに表示します。グリッド内のレコードを編集して「送信」を押すと、グリッドは「編集」、「追加」などの値を持つ「oper」というパラメーターを投稿します。このパラメーターについては、ページのbeforePageLoadイベントをチェックインしてから実行します。管理対象Beanの保存方法。この後、viewScope変数を新しいJSON文字列で更新し、以前は機能していた上記の方法で完全な更新を実行します。
<xp:this.beforePageLoad><![CDATA[#{javascript:
if (bccUser.isAdmin() && param.containsKey('oper') && param.get('oper').toString().length>0) {
bccGridDataHandler.saveGridDoc('RequestDummy','PersonRequestsDummy',param);
}
viewScope.put('jsonString',bccView.getViewColumnValue('PersonRequestsDummyJson',1));
print('jsonString in viewScope: '+viewScope.get('jsonString'));
if (bccUser.isAdmin() && param.containsKey('oper') && param.get('oper').toString().length>0) {
var url = context.getUrl().toSiteRelativeString(context);
if (url.indexOf('?')!=-1) {
url += "&doRefresh=true";
} else {
url += "?doRefresh=true";
}
print("redirecting to: "+url);
context.redirectToPage(url);
}}]]>
サーバーコンソールでは、最初のprintステートメントから正しい更新されたJSON文字列を確認できるため、save-methodは成功し、viewScopeに最新のデータがあります。ただし、グリッドには更新されたデータは表示されません。また、test-divも表示されません。
<xp:text value="#{javascript:viewScope.get('jsonString')}" />
また、viewScopeを更新した後、グリッドとdivで部分的な更新を試みましたが、同じことが起こりました。ページを手動で更新した後、すべてが再び正常になります。それで、ここで何が起こっているのですか?単純な文字列をコントロールに渡したいだけです。xPages-Lifecycleとイベントの順序についてもう一度間違えていますか?
前もって感謝します。よろしく、サラ