1

私のアプリでは、ユーザー ビューに KendoUI グリッドを使用していますが、フォーム ページにはカスタム コントロールを備えた Xpages を使用しています (少なくとも現時点では)。

Xpage は、sessionScope 変数を探して、それが新しいドキュメント (スコープ Var に何もない) か、更新 (unid が var にある) かを判断します。

<xp:this.data>
        <xe:objectData
            saveObject="#{javascript:PCModel.save()}"
            var="PCModel">
            <xe:this.createObject><![CDATA[#{javascript:var pc = new com.scoular.model.PC();
var unid = sessionScope.get("key");

if (unid != null) {
    pc.loadByUnid(unid);
    sessionScope.put("key","");
    viewScope.put("readOnly","Yes");
} else {
    pc.create();
    viewScope.put("readOnly","No");
}
viewScope.status = pc.status;
return pc;}]]></xe:this.createObject>
        </xe:objectData>
    </xp:this.data>

これは、完全な Xpage アプリで機能しました。sessionScope キーに値を入れて、Xpage を呼び出しただけです。

Kendo UI コードでは、クライアント側の JavaScript を使用していますが、sessionScope を設定する方法がわかりません。

URL を制御できるので、ギアを切り替えて使用できますが、アプリのデータはコードとは別の DB にあります。

どんな助けでも大歓迎です。

4

1 に答える 1

1

最も簡単な方法は実際に URL を使用することです。
パラメーターを指定して XPage を呼び出し、?key=...CSJS コード行を次のように変更します。

var unid = param.key;

クライアント側から sessionScope 変数を設定する必要がある場合は
、この空の計算済みテキスト フィールドを追加します。

<xp:text
    escape="true"
    id="setSessionScope"
    value="#{javascript: if (param.key) {sessionScope.key = param.key} ''}" />

XPage に追加し、CSJS コードで sessionScope 変数を設定します。

XSP.partialRefreshGet("#{id:setSessionScope}", {params: {'key': 'your key'}})
于 2016-10-06T18:26:56.810 に答える