在JSP中迭代ArrayList

时间:2013-05-06 10:54:04

标签: java jsp arraylist

我班上有两个arraylists,我想将它发送到我的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");
}

我想将food_Code作为选择标记中的选项和食物作为JSP中的Select标记中的值进行迭代;我的JSP是:

<select id="food" name="fooditems">

// Don't know how to iterate

</select>

任何一段代码都受到高度赞赏。在此先感谢:)

5 个答案:

答案 0 :(得分:16)

最好使用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 answer,这里有一个关于如何使用JSTL的好tutorial

答案 1 :(得分:3)

您可以使用JSTL的foreach。

<c:forEach items="${foodItems}" var="item">
   ${item}
</c:forEach>

您还需要导入JSTL核心:

<%@ taglib prefix="c" 
       uri="http://java.sun.com/jsp/jstl/core" %>

答案 2 :(得分:3)

<c:forEach items="${list}" var="foodItem">
 ${foodItem.propertyOfBean}
</c:forEach>

这将解决您的问题。

答案 3 :(得分:0)

有多种方法可以做到这一点(方案中有一些变化)

使用JSTL:

  1. 创建一个包含foodfood_code

    两个字段的bean

    公共课程食物{     私人串食品;     private String food_code;     //跟随Setter / getters }

  2. 现在,页面上可用的arraylist将是列表Food个对象。 在JSP代码中,您可以使用以下命令:

    <select name="fooditems">
        <c:forEach items="${list}" var="item">
            <option value="${item.food_code}">${item.food}</option>
        </c:forEach>
    </select>
    

    如果您使用的是struts:

    <html:select property="fooditems" >
    <html:optionsCollection property="list" label="food" value="food_code" />
    </html:select>
    

    此处list是对象键,用于从上下文(页面/会话)中检索列表

答案 4 :(得分:0)

您可以在JSP中检索列表

<select id="food" name="fooditems">

  <c:forEach items="${listname}" var="food" >

     <option value="${food}"> ${food} </option>

  </c:forEach>

</select>