2016-10-06 9 views
1

私のアプリはKendoUIグリッドをユーザービューで使用しますが、Xpagesはフォームページのカスタムコントロールを使用しています。KendoUIグリッドでsessionScope変数を設定するとエラーが発生します。

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を呼び出しました。

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

私はURLを制御することができるので、ギアを切り替えて使用することができますが、アプリケーションのデータは自分のコードとは異なるDBにあります。

ご協力いただければ幸いです。

答えて

1

確かにURLを使用している最も簡単な方法:
コールのXPageをパラメータ?key=...で、あなたが本当にからsessionScopeと変数を設定する必要がある場合には

var unid = param.key; 

にごCSJSコード行を変更クライアント側
は、この空の計算結果テキストフィールドを追加し

<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'}}) 
+0

と設定します。私は若干の変更を加えました。 var unid = params.keyをvar unid = context.getUrlParameter( "key")に変更しました。それは完全に機能します。ありがとう! –

+0

あなたの右のパラメータは間違っています。それはparamでなければなりません。私は自分の答えを更新しました。 –

関連する問題