如何分配给Salesforce中需要索引参数的setter,例如列表<>;?

如何分配给Salesforce中需要索引参数的setter,例如列表<>;?,salesforce,visualforce,Salesforce,Visualforce,在控制器中,我有两个值: public List<String> StringValue {get; set;} public List<String> ListValue {get; set;} 公共列表字符串值{get;set;} 公共列表ListValue{get;set;} ListValue在构造函数中初始化,并添加几个字符串。此时,在一个值中,我可以在VisualForce页面中用{!StringValue}和{!ListValue[1]}引用这些值。

在控制器中,我有两个值:

public List<String> StringValue {get; set;} 
public List<String> ListValue {get; set;} 
公共列表字符串值{get;set;}
公共列表ListValue{get;set;}
ListValue在构造函数中初始化,并添加几个字符串。此时,在一个值中,我可以在VisualForce页面中用{!StringValue}和{!ListValue[1]}引用这些值。列表一尤其是焦点-我甚至可以添加伪常量(getter)作为索引,使{!ListValue[nameIndex]}成为一个有效的引用

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

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

异常为
java.lang.ClassCastException:java.lang.String不能转换为common.formula.FormulaFieldReference

我想我理解了问题的基本原理——Salesforce无法创建包含索引参数的setter引用(这意味着只能引用采用单个参数的setter)


有没有办法解决这个问题,或者我只需要创建大量的ListValue1、ListValue2变量和相关代码?

我从来没有遇到过一种方法可以按照您要求的样式来实现这一点,我建议,要实现这一点,最简单的方法是将所需的值连接到一个参数中,然后在控制器内部将其拆分


您可能会找到一种合适的方法来使用
实现这一点,但我不确定您的完整用例。

这是一种技巧,但它避免了您必须创建几十个变量

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

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