2017-10-18 10 views
1

私は何か新しいことを試みています。私はjsonオブジェクトを持つarraylistにカスタムコントロールのプロパティ定義を渡したいと思います。私はcolsと呼ばれ、オブジェクト型のプロパティです。今jsonオブジェクトを持つarraylistに反復制御でアクセスする方法

<xc:this.cols><![CDATA[#{javascript:var cols = []; 

cols.push({ 
     "colName" : "Petter", 
     "colValue" : "Developer" 
    }); 
cols.push({ 
     "colName" : "Jesper", 
     "colValue" : "Administrator" 
    }); 
return cols;}]]></xc:this.cols> 

私のリピータで、私はこれらのオブジェクト/値を使用します:以下のように私は今、プロパティの値を計算しているのXPageに

。しかし、私はどのようにわからないのですか?

まず私には、JavaScript例えば、それらにアクセスするために、どれだけ私のリピートコントロールの外に試してみました。:

<xp:text escape="true" id="computedField1"> 
      <xp:this.value><![CDATA[#{javascript:var cols = compositeData.cols; 

cols[0]["colValue"]}]]></xp:this.value> 
     </xp:text> 
     <xp:text escape="true" id="computedField3"> 
      <xp:this.value><![CDATA[#{javascript:var cols = compositeData.cols; 

cols[1]["colValue"]}]]></xp:this.value> 
     </xp:text> 

これは私が開発者と管理者が返された値を取得するために動作するようです。

私はリピートコントロールでjsonにアクセスしたいが、私はここで迷う。

<xp:repeat id="repeat1" rows="30" var="colObj" indexVar="idx" 
      value="#{javascript:compositeData.cols}"> 

は、その後、私は私のリピート制御中に計算されたテキストコントロールを配置し、類似した何かしようとしています:

<xp:text escape="true" id="computedField2"> 
       <xp:this.value><![CDATA[#{javascript:colObj[idx]["colValue"]}]]></xp:this.value> 
      </xp:text> 

をしかし、私は取得ここ

は、私は私のリピートコントロールを設定している方法ですエラー:

com.ibm.xsp.binding.javascript.JavaScriptValueBinding.getValue(JavaScriptValueBinding.java:132)

誰かが私が間違っていたことと、それを正しく行う方法を説明できますか?これに

<xp:text escape="true" id="computedField2"> 
    <xp:this.value><![CDATA[#{javascript:colObj[idx]["colValue"]}]]>  
    </xp:this.value> 
</xp:text> 

答えて

2

は、これを変更してみてください

<xp:text escape="true" id="computedField2"> 
    <xp:this.value><![CDATA[#{javascript:colObj["colValue"]}]]> 
    </xp:this.value> 
</xp:text> 

あなたは、そのサブセットを取得する必要がcolObjを持っていないalreadyb。反復制御はidxを扱うので、反復の中のcolObjは反復の外側のcolObj[n]と同じです。

+0

hello Rob。実際にインデックスが私に提供されています。ありがとうございました! – Malin

関連する問題