[英]Iterate ArrayList in JSP
我的班级中有两个arraylist,我想将其发送到JSP,然后在select标记中迭代arraylist中的元素。
这是我的课:
package accessData;
import java.util.ArrayList;
public class ConnectingDatabase
{
ArrayList<String> food=new ArrayList<String>();
food.add("mango");
food.add("apple");
food.add("grapes");
ArrayList<String> food_Code=new ArrayList<String>();
food.add("man");
food.add("app");
food.add("gra");
}
我想在JSP中将food_Code迭代为select标记中的选项,将food作为值作为JSP中Select标记中的值。 我的JSP是:
<select id="food" name="fooditems">
// Don't know how to iterate
</select>
任何代码段均受到高度赞赏。 提前致谢 :)
最好使用java.util.Map
来存储键和值,而不是两个ArrayList
,例如:
Map<String, String> foods = new HashMap<String, String>();
// here key stores the food codes
// and values are that which will be visible to the user in the drop-down
foods.put("man", "mango");
foods.put("app", "apple");
foods.put("gra", "grapes");
// if this is your servlet or action class having access to HttpRequest object then
httpRequest.setAttribute("foods", foods); // so that you can retrieve in JSP
现在要在JSP中迭代地图,请使用:
<select id="food" name="fooditems">
<c:forEach items="${foods}" var="food">
<option value="${food.key}">
${food.value}
</option>
</c:forEach>
</select>
或不带JSTL:
<select id="food" name="fooditems">
<%
Map<String, String> foods = (Map<String, String>) request.getAttribute("foods");
for(Entry<String, String> food : foods.entrySet()) {
%>
<option value="<%=food.getKey()%>">
<%=food.getValue() %>
</option>
<%
}
%>
</select>
要了解有关使用JSTL进行迭代的更多信息,这里是一个很好的SO答案,并且这是一个有关如何通常使用JSTL的很好的教程 。
您可以使用JSTL的foreach。
<c:forEach items="${foodItems}" var="item">
${item}
</c:forEach>
您还需要导入JSTL core:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${list}" var="foodItem">
${foodItem.propertyOfBean}
</c:forEach>
这样可以解决您的问题。
有多种方法可以完成此操作(在方案中进行一些更改)
使用JSTL:
创建一个具有两个字段的bean,分别是food
和food_code
公共类食品{私人弦乐器食品; 私有的字符串food_code; // Setter / getters跟随}
现在,页面上可用的arraylist将是Food
对象列表。 在JSP代码中,可以使用以下代码:
<select name="fooditems">
<c:forEach items="${list}" var="item">
<option value="${item.food_code}">${item.food}</option>
</c:forEach>
</select>
如果您使用支撑架:
<html:select property="fooditems" >
<html:optionsCollection property="list" label="food" value="food_code" />
</html:select>
list
是对象键,将用于从上下文(页面/会话)中检索列表
您可以通过以下方式在JSP中检索列表:
<select id="food" name="fooditems">
<c:forEach items="${listname}" var="food" >
<option value="${food}"> ${food} </option>
</c:forEach>
</select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.