如何在Salesforce中指定需要索引参数的setter,例如List <>?

Dav*_*vid 5 salesforce visualforce

在控制器中我有两个值:

public List<String> StringValue {get; set;} 
public List<String> ListValue {get; set;} 
Run Code Online (Sandbox Code Playgroud)

ListValue在构造函数中初始化,并添加了几个字符串.在这一点上,我可以在VisualForce页面中使用{!StringValue}和{!ListValue [1]}来引用它们.特别是列表一个是焦点 - 我甚至可以添加伪常量(getters)作为索引,使{!ListValue [nameIndex]}成为有效的引用.

但是,在尝试设置列表值而不是简单的字符串值时,我遇到了异常.

<apex:param value="123" assignTo="{!ListValue[1]}" /> 
Run Code Online (Sandbox Code Playgroud)

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

我想我理解问题的基础 - Salesforce无法创建包含索引参数的setter引用(意味着只能引用带有单个参数的setter).

有什么方法可以解决这个问题,还是只需要创建大量的ListValue1,ListValue2变量和相关代码?

jkr*_*ill 3

这是一个技巧,但它避免了您创建数十个变量。

<apex:param value="1:123" assignTo="{!smartAssigner}" />
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中:

public void setSmartAssigner(String myval) { // parse the colon, set list value appropriately.
Run Code Online (Sandbox Code Playgroud)

你明白了。