0

私がこの質問をしたのは少し前のことです。これは、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とイベントの順序についてもう一度間違えていますか?

前もって感謝します。よろしく、サラ

4

3 に答える 3

0

私はあなたがのviewScope価値を失っていると思いますredirectToPagerequestScopeまたはで試してくださいsessionScope

于 2013-01-30T10:52:45.260 に答える
0

すべての提案をありがとう、私はそれらをすべて試しましたが、残念ながら運がありませんでした. これに関する最も興味深い点は、クライアント側のアラート ステートメントを onClientLoad イベントに入れると、ページに入ったときに 1 回だけ発生し、context.redirect または .reload コマンドの後では発生しないことです。結局、次の方法で問題を解決しました。

beforePageLoad イベントからリダイレクト コマンドを削除し、jqGrid の送信機能に次のパラメーターを追加しました (こちらのドキュメントを参照してください)。

afterSubmit: function(response, postdata) {window.location.href=window.location.href;return [true,'',''];}

これは私にとってはうまくいきます(この後、onClientLoadも再びトリガーされます)が、サーバー側から誘導されたページの更新がクライアント側の更新と同じことを行わない、またはクライアント側の更新を模倣できないのはなぜだろうか。

于 2013-02-07T14:09:31.297 に答える
0

beforePageLoad イベントが正しいかどうかわかりませんが、beforeRenderResponse で JSON を生成することを検討しましたか?

于 2013-02-26T15:59:50.280 に答える