在foreach循环中生成动态id

时间:2013-12-31 07:19:15

标签: java jsp jstl el

我有三个bean类Animal,Dog和Pug(名称改为示例)

class Animal {
List <Dog> dogList;
}

class Dog {
price;
List<Pug> PugList;
}

class Pug {
color;
weight;
}
下面的

是jsp页面:

<c:forEach var="animal" items="${Animal.dogList}"  varStatus="outerLoop"> 

   <c:forEach var="dog" items="${animal.PugList}"  varStatus="innerLoop">
    <tr>
        <td>
            <label id="pugColorLabel">color :</label>
            <input id="colorid${innerloop.index +1}" name="color" value="${dog.color}" />   
            <input id="weightid${innerloop.index +1}" name="weight" value="${dog.weight}" />    
        </td>
    </tr>
    </c:forEach>

            <td>
                <label id="dogPriceLabel">price :</label>
                <input id="dogPriceid${outerLoop.index +1}" name="price" value="${animal.price}"/>
            </td>
 </c:forEach>

我有一个页面,我必须显示所有哈巴狗的颜色和重量,包括狗的价格和7个狗对象(静态数字)和1-5个狗对象将只有一个哈巴狗对象(静态数字) )但是第6和第7只狗会有  每个两个哈巴狗(再次是静态数字)。

这是我的问题:

所以<c:forEach>逻辑工作正常,但是id不是我想要的方式,我希望所有的哈巴狗都不同,以便我可以通过id获取值。  上面的代码片段总是会给我pug属性 - colorid和weightid为1(colorid1和weightid1)因为1-5 dog实例只有一个pug实例。  并且第5和第6只狗的实例每个都有两个哈巴狗,所以它们也应该给我不同的ID,以便我可以获取它们的值。

2 个答案:

答案 0 :(得分:1)

使用outerloop和innerloop制作唯一ID,您可以使用colorId${outerloop.index+1}{innerloop.index+1} 现在你将获得id,colorId11,colorId21 ... colorId61,colorId62 ..等

答案 1 :(得分:0)

只是为了一个简单的代码,如果你不想获得索引[0],你可以使用de property&#39; count &# 39 ;,制作&#39; innerLoop.count&#39;而是&#39; innerLoop.index&#39;例如。 属性 index 在[0]中开始,属性 count 在[1]中开始。

<input id="colorid${innerloop.count}" name="color" value="${dog.color}"/> 
<input id="weightid${innerloop.count}" name="weight" value="${dog.weight}"/>