如何分配给 Salesforce 中需要索引参数(例如 List<>)的 setter?

发布于 2024-12-13 19:19:56 字数 713 浏览 2 评论 0 原文

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

public List<String> StringValue {get; set;} 
public List<String> 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 变量和相关代码?

In a controller I have two values:

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

The ListValue is initialized in the constructor and several strings are added. At this point in a value I can refer to these with {!StringValue} and {!ListValue[1]} in a VisualForce page. The list one in particular is the focus - I can even add pseudo-constants (getters) as indexes, making {!ListValue[nameIndex]} a valid reference.

However I've run into an exception when trying to set a list value instead of a simple string value.

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

The exception is java.lang.ClassCastException: java.lang.String cannot be cast to common.formula.FormulaFieldReference

I think I understand the basics of the problem - Salesforce can't create a setter reference that includes an index parameter (meaning only setters that take a single parameter can be referenced).

Is there any way around this, or do I just have to create a massive amount of ListValue1, ListValue2 variables and associated code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

各空 2024-12-20 19:19:56

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

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

然后在你的控制器中:

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

你明白了。

It's a hack, but it avoids you having to create dozens of variables.

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

Then in your controller:

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

You get the idea.

青萝楚歌 2024-12-20 19:19:56

我从来没有遇到过一种方法可以按照您要求的样式执行此操作,我建议要实现此目的,最简单的方法是将您想要的值连接到一个参数中,然后将它们拆分回来控制器内部。

您可能会找到一种合适的方法来使用 来执行此操作,但我不确定您的完整用例。

I've never come across a way to do this in the style you're requesting, I'd suggest that to get this going the easiest thing to do would be to concatenate the values you want into one parameter and then split them back up inside the controller.

You might find a suitable way to do this with <apex:repeat> but I'm not sure on your full use case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文