2017-10-18 355 views
1

我正在嘗試新的東西。我想通過自定義控件中的屬性定義將json對象傳遞給arraylist。這個屬性叫做cols,屬於object類型。如何在重複控件中使用json對象訪問arraylist

在我作爲跟着已計算的屬性值,現在一個XPage:

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

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

現在在我的中繼器我想使用這些對象/值。但我不知道如何?

首先我想重複我的控制範圍之外的只是如何訪問它們的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)

有人可以解釋我做錯了什麼,我該如何正確地做到這一點?

回答

2

嘗試改變這一點:

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

要這樣:

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

您alreadyb有colObj所以,沒必要弄的子集。重複控制處理idx所以,colObj中的重複與colObj[n]之外的重複相同。

+0

你好羅布。該指數確實爲我提供了。謝謝! – Malin