Java 在JSP中迭代ArrayList
我的类中有两个arraylist,我想将其发送到JSP,然后在select标记中迭代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
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:
food
和food\u code
公共食品{
私人串食;
私有字符串代码;
//接二连三
}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@venkyfoodItems=“${foodItems}”
不是
的属性,而是items=“${foodItems}”
对不起,我错过了。实际上应该是:${food}谢谢。
<select id="food" name="fooditems">
<c:forEach items="${listname}" var="food" >
<option value="${food}"> ${food} </option>
</c:forEach>
</select>