2016-07-06 6 views
1

マイメニューは、データベースのリソースにファイルとして保存するデータ構造によって駆動されます。しかし、私はファイルのリソースとして複数行の文字列を格納できない(または格納方法がわからない)ようです。Xpages:文字列をリソースバンドルとしてファイルに格納する方法

私の文字列は次のようになります。

[ 
{ 
    "mnuNme": "by Author", 
    "mnuTyp": "1", 
    "mnuTrg": "xpNavigator3" 
    }, 
    { 
    "mnuNme": "by Location", 
    "mnuTyp": "1", 
    "mnuTrg": "xpView02" 
    } 
] 

は、プロパティとしてこれを保存する方法はあります。

答えて

2

あなたが保存するとJSONデータとしてメニューを維持するための場所を探しています。

これにはサーバー側のJavaScriptライブラリを使用できます。
メニュー定義を変数に割り当てます。 JSON文字列を構文解析する必要はありません。すでにJSON文字列をJavaScript配列/オブジェクトとして解析する必要はありません。

例:

サーバーサイドJavaScriptライブラリ "menu.jss":

var menu = [ 
      { 
       "mnuNme": "by Author", 
       "mnuTyp": "1", 
       "mnuTrg": "xpNavigator3" 
      }, 
      { 
       "mnuNme": "by Location", 
       "mnuTyp": "1", 
       "mnuTrg": "xpView02" 
      } 
      ]; 

のXPage

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:this.resources> 
     <xp:script 
      src="/menu" 
      clientSide="false"> 
     </xp:script> 
    </xp:this.resources> 
    <xp:repeat 
     id="repeat1" 
     rows="0" 
     var="entry" 
     value="#{javascript:menu}"> 
     <xp:text 
      escape="true" 
      id="computedField1" 
      value="#{entry.mnuNme}"> 
     </xp:text> 
     <br /> 
    </xp:repeat> 
</xp:view> 
+0

これは完全に働きました! –

+0

このグローバル変数はガベージコレクションのために未定義になる可能性があります。/および/またはページが書き込まれると、グローバル変数を使用しています。永続性のためのディスク。グローバルなjavascriptサーバー側の変数は、no-noとみなす必要があります。たとえば、関数の呼び出しなどにSSJSインクルードを使用するだけです。たとえば、文字列の内容を返したmenu()という関数を作成し、その値にmenu()を呼び出します(value = "#{javascript:return menu );} "それは規模がより安全になるでしょう。 –

1

なぜマルチラインでなければならないのですか? JSONを保存しようとしているようですが、それを縮小して1行として保存します。編集可能なバージョンをマスターとして別の場所に保存し、展開するときに再縮小します。

しかし、あなたが本当にそれをしたい場合は、私は適切な構文があると信じて:

menuStructure=[ \ 
{ \ 
    "mnuNme": "by Author",\ 
    "mnuTyp": "1",\ 
    "mnuTrg": "xpNavigator3"\ 
    },\ 
    {\ 
    "mnuNme": "by Location",\ 
    "mnuTyp": "1",\ 
    "mnuTrg": "xpView02"\ 
    }\ 
] 
関連する問題