2011-11-02 61 views
5

在控制器I有兩個值:如何分配給Salesforce中需要索引參數(如List <>)的setter?

public List<String> StringValue {get; set;} 
public List<String> ListValue {get; set;} 

的ListValue是在構造函數初始化了,並且增加了幾個字符串。在這個值中,我可以在VisualForce頁面中用{!StringValue}和{!ListValue [1]}來引用這些值。特別的名單是焦點 - 我甚至可以添加僞常量(getters)作爲索引,使得{!ListValue [nameIndex]}成爲一個有效的引用。

但是,我試圖設置而不是一個簡單的字符串值時遇到了異常。

<apex:param value="123" assignTo="{!ListValue[1]}" /> 

唯一的例外是java.lang.ClassCastException: java.lang.String cannot be cast to common.formula.FormulaFieldReference

我想我明白這個問題的基本知識 - Salesforce的不能創建一個setter參考,其中包括索引參數(這意味着僅僅採取單一的參數制定者可以參考)。

有沒有解決這個辦法,還是我只需要創建ListValue1的巨量,ListValue2變量和相關的代碼?

回答

3

這是一個黑客,但它避免你不得不創造幾十個變量。

<apex:param value="1:123" assignTo="{!smartAssigner}" /> 

然後在你的控制器:

public void setSmartAssigner(String myval) { // parse the colon, set list value appropriately. 

你的想法。

0

我從來沒有遇到過這樣做的方式,你要求的風格,我建議,要做到這一點最簡單的事情是將你想要的值連接成一個參數,然後將它們拆回控制器內部。

你可能會找到一個合適的方式與<apex:repeat>這樣做,但我不知道在你充分利用的情況。

相關問題