如何在appendItemValue调用中获取sessionScope变量中的值

时间:2012-10-15 23:11:18

标签: xpages

我创建了一个sessionScope变量,它包含一个字段名称列表和另一个由这些字段名称和存储在其中的值组成的集合。

allFieldNames是包含所有字段名称

的范围变量

allFieldNames
[0] T0Q1
[1] T0Q2
[2] T1Q1
[3] T2Q1
[4] T3Q1
[5] T4aQ1
[6] T5Q1
[7] T6Q1
[8] T7Q1

SS值
T0Q1作为收购/购买/与其他公司合并的一部分 T0Q2是
T1Q1非常同意 T2Q1同意
T3Q1我拥有广泛的专家和资源网络 T4aQ1我有时需要帮助 T5Q1这些都不是。
T6Q1在合理的范围内 T7Q1同意

var questions = @List(sessionScope.allFieldNames);
for( i=1; i < sessionScope.ssTotalQuestions; i++ ) {
    viewScope.put("x", @Subset(@Subset(questions,i),-1));
    newDoc.appendItemValue(x, viewScope.x);
}

appendItemValue确实创建了我想要的字段,但我遇到的问题是我无法获取匹配范围变量中的值。我知道在我的代码中导致问题的是 viewScope.x ,但我现在无法弄清楚如何识别和引用范围变量。

仅供参考,没有后端表单可以从中获取这些字段名称 - 此表单是即时创建的,所有字段都是通过此例程在表单上创建的,然后保存。

1 个答案:

答案 0 :(得分:0)

这应该有效:

for( i=1; i < sessionScope.ssTotalQuestions; i++ ) {
    newDoc.replaceItemValue(sessionScope.allFieldNames[i], sessionScope.ssTotalQuestions[i]);
}

(如果字段名称是数据的一部分,则可能需要使用indexOf(“”)来查找第一个空白)。但是它有点脆弱......你在这里有名字/值对,所以你可能想用一个HashMap替换你的两个范围变量,所以你可以确定你的问题永远不会用完字段。类似的东西:

viewScope.questions = new java.util.HashMap();
viewScope.questions.put("T0Q1","As a part of an acquiring/purchasing/merging with another company.");
...

希望有所帮助