我有一个包含一系列字段的备注表单,例如city_1,city_2,city_3等。
我有一个XPage,在XPage上我有一个重复。
重复基于具有十个值1 - 10
的数组var repArray = new Array() ;
for (var i=1;i<=10;i++) {
repArray.push(i) ;
}
return(repArray);
在重复内容中,我有一个自定义控件,用于显示字段city_1到city_10
repeat有一个传入的自定义属性docdatasource 它还有一个名为cityFieldName的字符串自定义属性,它使用repeat计算 集合名称,以便在第一个重复行中为city_1,在第二个行中为city_2等。
自定义控件上的可编辑文本字段使用EL公式绑定 compositeData.docdatasource [compositeData.cityFieldName]
这很好但每次我添加新字段时都要记住创建一个新的自定义属性,然后在父页面上引用它。
我希望能够简单地计算数据绑定,例如
compositeData.docdatasource['city_' + indexvar]
其中indexvar是表示当前行号的变量。
这可能吗?我读过你不能在表达式语言中使用'+'。
答案 0 :(得分: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]}
绑定街道。等
稍微冒一些搞乱阵列序列的危险,如果这是一个问题,你需要在这里深入挖掘使用对象。
答案 1 :(得分:1)
计算到javascript并使用类似
的内容var viewnam = "#{" + (compositeData.searchVar )+ "}"
return viewnam
确保这是在自定义控件
中的页面加载时计算的答案 2 :(得分:0)
我从来没有能够在EL中进行添加,但我只是简单地计算自定义控件之外的字段名称,然后将这些值传递给自定义控件。
如果您希望通过我提供的演示文稿,我可以向您发送一些有效的代码。