Java 在JSP中迭代ArrayList

Java 在JSP中迭代ArrayList,java,jsp,arraylist,Java,Jsp,Arraylist,我的类中有两个arraylist,我想将其发送到JSP,然后在select标记中迭代arraylist中的元素 这是我的班级: package accessData; import java.util.ArrayList; public class ConnectingDatabase { ArrayList<String> food=new ArrayList<String>(); food.add("mango"); food.add("app

我的类中有两个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");
}
包访问数据;
导入java.util.ArrayList;
公共类连接数据库
{
ArrayList食品=新ArrayList();
食物。添加(“芒果”);
食物。添加(“苹果”);
食物。添加(“葡萄”);
ArrayList food_Code=新的ArrayList();
食物。加上(“人”);
食品。添加(“app”);
食品。添加(“gra”);
}
我想在select标记中迭代food_代码作为选项,在JSP中迭代food作为select标记中的值;我的JSP是:

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

// Don't know how to iterate

</select>

//不知道如何迭代

任何一段代码都将受到高度赞赏。提前感谢:)

您可以使用JSTL的foreach

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

${item}
您还需要导入JSTL核心:

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


${foodItem.propertyOfBean}

这将解决您的问题。

有多种方法可以做到这一点(对您的方案进行一些更改)

使用JSTL:

  • 创建一个包含两个字段的bean,分别为
    food
    food\u code

    公共食品{ 私人串食; 私有字符串代码; //接二连三 }

  • 现在页面上可用的arraylist将是list
    Food
    objects。 在JSP代码中,可以使用以下命令:

    <select name="fooditems">
        <c:forEach items="${list}" var="item">
            <option value="${item.food_code}">${item.food}</option>
        </c:forEach>
    </select>
    
    
    ${item.food}
    
    如果您使用的是struts:

    <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>
    
    
    ${food}
    
    最好使用
    java.util.Map
    来存储键和值,而不是两个
    ArrayList
    ,例如:

    Map foods=newhashmap();
    //钥匙在这里存储食物代码
    //和值是用户在下拉列表中可见的值
    食物。把(“人”、“芒果”);
    食物。放置(“应用程序”、“苹果”);
    食物。放(“格拉”、“葡萄”);
    //如果这是可以访问HttpRequest对象的servlet或action类,那么
    httpRequest.setAttribute(“食品”,食品);//以便您可以在JSP中检索
    
    现在要在JSP中迭代映射,请使用:

    
    ${food.value}
    
    或没有JSTL:

    
    


    要了解更多关于JSTL迭代的信息,这里是一个很好的方法,这里是关于如何使用JSTL的一个很好的方法。

    请在这里发布相关代码,外部链接将来可能不起作用,这将使你的答案毫无用处。@Michal Borek显示错误未定义属性foodItems@AnishSharma您需要将该项绑定到请求参数。@MichalBorek
    foodItems=“${foodItems}”
    不是
    的属性,而是
    items=“${foodItems}”
    你在使用任何框架或标记库吗?@Santosh很抱歉我实际上在使用struts。那就开始吧。你可能想在
    食品中添加
    “man”
    “app”
    “gra”
    ,而不是
    食品
    它无法识别c标记,以及更多关于“食品”和“食品”的信息java类中的“food_code”。您必须在yor jsp文件中包含以下代码:
    您必须包含
    jstl核心标记
    库。
    foodItems=
    不是属性,
    items
    是属性。我已经包含了struts标记库,但它无法识别标记html:selecct。您是否在顶部包含了指令(
    )?我假设您在应用程序中包含了所需的jar。您在日志中看到任何错误吗?生成的jsp html源代码是什么样子的?您能给我一个JSTL核心jar的链接吗?因为我已经包含了10个jar,但它仍然无法识别它。非常感谢您,至少脚本代码应该可以工作
    JSTL
    ?您还检查了您的
    地图是否至少包含一个元素吗?您如何设置要在JSP中访问的
    foods
    地图?这里是包含
    JSTL.jar
    standard.jar
    的zip文件的链接:是的,我已经在控制台上打印了我的地图,它包含了元素,并且如何可以sp知道类中的食物映射??当我在没有jstl的情况下使用它时,它无法识别jsp中代码中的条目和食物。.jsp会知道,当您让它知道时,您必须在请求范围(
    request.setAttribute(“foods”,foods)
    )或会话范围(
    session.setAttribute(“foods”)中设置映射“,食品)
    )在servlet类或action类中,无论哪个类有权访问
    HttpRequest
    对象。在JSP中,如果您像我建议的那样使用ELs,那么这很好,但是如果您使用的是Scriptlet,那么您需要首先获取对象,因为我已经更新了我的答案。我建议您阅读一本关于JSP/Servlets的好教程或好书呃,你有时间。了解工作原理是非常必要的。@Praksh K我对这项服务器端工作非常陌生。仍然在学习它只有几个月。请分享一个关于jsp的好教程的链接/Servlets@venky
    foodItems=“${foodItems}”
    不是
    的属性,而是
    items=“${foodItems}”
    对不起,我错过了。实际上应该是:${food}谢谢。
    <select id="food" name="fooditems">
    
      <c:forEach items="${listname}" var="food" >
    
         <option value="${food}"> ${food} </option>
    
      </c:forEach>
    
    </select>