0

我创建了一个 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导致了问题,但我现在无法弄清楚如何识别和引用范围变量。

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

4

1 回答 1

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.");
...

希望有帮助

于 2012-10-16T01:46:02.423 回答