3

次のコードを取得しました。

<c:forEach var="i" begin="1" end="${finalDisccount}">
                <p><c:out value="${tracksCD}" /> Tracks für CD${i} hochladen</p>
                <p><input id="filename_${i}" type="file" name="filename_${i}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>

値「tracksCD」は、変数 i と連結する必要があるため、ループによって次のようなものが作成されます。

<p><c:out value="${tracksCD1}" /> Tracks für CD${i} hochladen</p>
<p><c:out value="${tracksCD2}" /> Tracks für CD${i} hochladen</p>

等々。${tracksCD} と ${i} を組み合わせて ${tracksCD1} などを動的に取得する方法はありますか?

前もって感謝します。

4

1 に答える 1

0

データのスコープがわかっている場合は、スコープ マップまたは${requestScope}でアクセスできます。たとえば、リクエストスコープにある場合:${sessionScope}${applicationScope}

<c:forEach var="i" begin="1" end="${finalDisccount}">
    <c:set var="tracksCDKey" value="${tracksCD}${i}" />
    <p><c:out value="${requestScope[tracksCDKey]}" /> Tracks für CD${i} hochladen</p>
    <p><input id="filename_${i}" type="file" name="filename_${i}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>

ただし、かなり厄介な設計ミスがあります。むしろ、${tracksCDs}次のようにできるように、それらを配列またはリストに収集します。

<c:forEach var="i" begin="1" end="${finalDisccount}">
    <p><c:out value="${tracksCDs[i - 1]}" /> Tracks für CD${i} hochladen</p>
    <p><input id="filename_${i}" type="file" name="filename_${i}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>

または、${finalDisccount}たまたま配列/リストと同じサイズの場合:

<c:forEach items="${tracksCDs}" var="${tracksCD}" varStatus="loop">
    <p><c:out value="${tracksCD}" /> Tracks für CD${loop.count} hochladen</p>
    <p><input id="filename_${loop.count}" type="file" name="filename_${loop.count}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>
于 2012-04-22T15:14:24.290 に答える