2012-04-22 23 views
3

我得到了下面的代碼:JSTL如何連接值?

<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}等等?

在此先感謝。

+0

一更好的解決方案是讓填充這些數組的對象爲您完成並簡單地將其傳回。帶有JSTL的JSP只應負責渲染。準備數據應該在其他地方完成。 – duffymo 2012-04-22 13:53:46

+0

Acutally陣列被填充。用戶必須在上一步中輸入一個數字,並在該循環中程序根據給定的數字生成上傳輸入。所以我需要這樣的代碼才能知道我必須生成多少輸入表單。 – 2012-04-22 14:45:52

回答

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> 

但是,你在那裏有一個非常討厭的設計錯誤。而是收集他們在一個數組或列表作爲​​,這樣你可以做如下:

<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> 
+0

非常感謝你,陣列的想法做到了,它現在像一個魅力:) – 2012-04-22 18:28:13

+0

不客氣。既然你是新來者,請不要忘記標記答案,只要最有助於解決問題。另見http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 – BalusC 2012-04-22 20:32:31