1

我有一个带有一系列字段的注释表单,例如 city_1、city_2、city_3 等。

我有一个 XPage,在那个 XPage 上我有一个重复。

重复基于具有 10 个值 1 - 10 的数组

var repArray = new Array() ;
for (var i=1;i<=10;i++) {
repArray.push(i) ;
}

返回(repArray);

在重复中,我有一个自定义控件,用于显示字段 city_1 到 city_10

重复有一个自定义属性 docdatasource 传入它还有一个名为 cityFieldName 的字符串自定义属性,它是使用重复集合名称计算的,因此在第一个重复行中它是 city_1,在第二个重复行中是 city_2 等等。

自定义控件上的可编辑文本字段使用 EL 公式 CompositeData.docdatasource[compositeData.cityFieldName] 绑定

这很好用,但每次我添加新字段时,我都必须记住创建一个新的自定义属性,然后在父页面上引用它。

我希望能够简单地计算数据绑定,例如

compositeData.docdatasource['city_' + indexvar]

其中 indexvar 是表示当前行号的变量。

这可能吗 ?我读过您不能在表达式语言中使用“+”。

4

3 回答 3

2

第一:你不需要一个计数器的数组。只要 10 就可以(数字) - 也重复 10 次。但是你可以构建一个数组数组:

var repArray = [];
for (var i=1;i<=10;i++) {
   repArray.push(["city","street","zip","country","planet"]) ;
}
return repArray;

那么你应该可以使用

#{datasource.indexvar[0]}

绑定城市,

#{datasource.indexvar[1]}

绑定街道。等等

有一点点弄乱数组序列的危险,如果这是一个问题,你需要在此处更深入地使用 Object 。

于 2012-01-26T00:11:40.450 回答
1

计算到 javascript 并使用类似的东西

var viewnam = "#{" +  (compositeData.searchVar )+ "}"
return viewnam

确保这是在自定义控件中的页面加载时计算的

于 2012-01-24T19:34:07.533 回答
0

我从来没有能够在 EL 中进行添加,但是我非常成功地简单地计算了自定义控件之外的字段名称,然后将这些值传递到自定义控件中。

如果您愿意,我可以从我提供的演示文稿中向您发送一些工作代码。

于 2012-01-24T19:35:03.460 回答