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( "")を使用する必要がある場合があります)。ただし、少し壊れやすいです...ここには名前と値のペアがあるため、2つのスコープ変数を1つの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 に答える