我正在尝试创建一个JSP“编辑”页面来编辑一个人的详细信息。 其中一个细节是地址的ArrayList。 虽然如果此人没有地址,ArrayList可能为空。
我的问题在于编辑页面的输入字段。 我正在尝试按如下方式显示ArrayList ......
<c:forEach items="${person.details.addressList}" var="address">
<label>Street:
<input type="text" id="psnStreet" name="street" value='${address.street}'>
</label>
<label>City:
<input type="text" id="psnCity" name="city" value="${address.city}" >
</label>
<label>State:
<input type="text" id="psnState" name="state" value="${address.state}" >
</label>
<label>Postal Code:
<input type="text" id="psnPCode" name="postalCode" value="${address.postalCode}" >
</label>
<label>Country:
<input type="text" id="psnCountry" name="country" value="${address.country}" >
</label>
</c:forEach>
问题是当ArrayList为空时,输入字段不会显示在页面上!这几乎使得无法添加地址。
如何处理JSTL?
答案 0 :(得分:0)
首先,您不应将id
置于迭代中,因为它会在您的网页上重复id
。
其次,您应检查列表是否为空并使用
显示输入<c:if test="${empty person.details.addressList}">
然后在其他短语中继续进行迭代。
答案 1 :(得分:0)
您可以使用以下<c:if test>
来处理....
//When your array list is not empty,you will see with datas
<c:if test='${not empty "${person.details.addressList}"}'>
<c:forEach items="${person.details.addressList}" var="address">
<label>Street:
<input type="text" id="psnStreet" name="street" value='${address.street}'>
</label>
<label>City:
<input type="text" id="psnCity" name="city" value="${address.city}" >
</label>
<label>State:
<input type="text" id="psnState" name="state" value="${address.state}" >
</label>
<label>Postal Code:
<input type="text" id="psnPCode" name="postalCode" value="${address.postalCode}" >
</label>
<label>Country:
<input type="text" id="psnCountry" name="country" value="${address.country}" >
</label>
</c:forEach>
</c:if>
//When your array list is empty,you will see blank fields
<c:if test="${empty person.details.addressList}">
<c:forEach items="${person.details.addressList}" var="address">
<label>Street:
<input type="text" id="psnStreet" name="street">
</label>
<label>City:
<input type="text" id="psnCity" name="city">
</label>
<label>State:
<input type="text" id="psnState" name="state">
</label>
<label>Postal Code:
<input type="text" id="psnPCode" name="postalCode">
</label>
<label>Country:
<input type="text" id="psnCountry" name="country">
</label>
</c:forEach>
</c:if>