私の問題には数え切れないほどの例がありますが、私はそれらをたくさん経験し、私の間違いがどこにあるのか理解できません。
ArrayList(TestSzenario)を繰り返し処理しています。TestSzenarioクラスには、適切なゲッターとセッターを持つnameという文字列変数が含まれています。
これが私のコードです:
<td><select name="selectSzenario" id="selectSzenario" size="1">
<c:forEach items="<%=testszenario.getSzenariosForSummary() %>" var="szenario">
<option>${szenario.name}</option>
</c:forEach></select></td></tr>
私の問題は、変数が機能していないことです。選択ボックスのすべてのオプションに対して、常に${szenario.name}を取得します。JSTL-taglibを適切に宣言しましたが、サイトには複数のオプションがあるため、反復が機能していることがわかります。また、HTMLソースコードを調べたところ、foreachが解決されました。
HTML出力:
<tr><td>Szenario:</td>
<td><select name="selectSzenario" id="selectSzenario" size="1">
<option>${szenario.name}</option>
<option>${szenario.name}</option>
</select></td></tr>
回答1の編集:ありがとう、しかし私は前にそれを試しました:
ArrayList<TestSzenario> szenarioList = testszenario.getSzenariosForSummary();
request.setAttribute("aList", szenarioList);
request.setAttribute("ts", testszenario);
<c:forEach items="${aList}" var="szenario">
<option>${szenario.name}</option>
</c:forEach></select></td></tr>
<c:forEach items="${ts.szenariosForSummary}" var="szenario">
<option>${szenario.name}</option>
</c:forEach></select></td></tr>
ただし、どちらの場合も、リストを反復処理することすらなく、オプションは1つだけになります(リストには2つの要素が含まれます)。