2011-11-02 7 views
5

コントローラでは、2つの値があります。List <>などのインデックスパラメータを必要とするSalesforceのセッターを割り当てる方法

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

ListValueはコンストラクタで初期化され、いくつかの文字列が追加されます。値のこの時点で、私はVisualForceページの{!StringValue}と{!ListValue [1]}でこれらを参照できます。リストは特に注目しています。疑似定数(ゲッター)をインデックスとして追加することもできます。{!ListValue [nameIndex]}は有効な参照です。

しかし、に単純な文字列値の代わりにリスト値を設定しようとすると例外が発生しました。

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

例外は java.lang.ClassCastException: java.lang.String cannot be cast to common.formula.FormulaFieldReferenceです。

問題の基本を理解していると思います - Salesforceではインデックスパラメータを含むセッター参照を作成できません。 )。

これを回避する方法はありますか?また、大量のListValue1、ListValue2変数および関連するコードを作成するだけですか?

答えて

3

これはハックですが、何十もの変数を作成する必要はありません。

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

次に、あなたのコントローラで:

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

あなたがアイデアを得ます。

0

あなたがリクエストしているスタイルでこれを行う方法を見つけたことはありません。これを行うには最も簡単なことは、必要な値を1つのパラメータに連結してからそれらをコントローラーの内部に戻します。

<apex:repeat>でこれを行う適切な方法が見つかるかもしれませんが、完全な使用についてはわかりません。

関連する問題