我有一个表格,可以从数据库中打印出食物的名称和价格
<select name="food" multiple="multiple" size="10" >
<% for (int i = 0; i < name.size(); ++i) {
%>
<option
value="<%out.println(name.get(i));%>">
<% out.println(name.get(i) + "-------- $" + price.get(i));%>
</option>
<%
}
%>
</select>
当我把它放入数组时它给出了食物和价格
String[] list = request.getParameterValues("food");`foodarray = list;
application.setAttribute("sessfood", foodarray);
我在用
String[] ceiArray = (String[])application.getAttribute("sessfood");
从上一个jsp页面获取名称。所以,我可以将其检索到另一个网页,但它只返回名称而不是价格,无论如何我也可以检索价格吗?
2条答案
按热度按时间rta7y2nd1#
首先,在JSP中不赞成使用
<% scriptlets %>
,因此考虑切换到JSP EL。我已经使用了相同的代码来显示它的使用是多么简单。要在另一个JSP中检索
price
,还必须传递它。当前,<select>
显示name
和price
,但只传递name
。在目标servlet中,您可以检索 name=price Map,并以JSP更方便从中检索值的方式存储它。
现在,在JSP中,您可以通过以下方式访问价格
顺便说一下,我不确定是否应该将用户的食物选择存储到
application
作用域中,作为应用程序的所有用户共享,如果这不是您想要的,请使用session
作用域。zy1mlcev2#
把食物想象成一个领域对象,也就是说,它代表了你的问题领域的一部分。食物有属性、名称、价格等等--既然它有价格,也许把它叫做产品会更好。
名称或价格可能会随着时间的推移而更改,因此您应该为产品分配一个唯一代码,以便随着时间的推移对其进行标识。表单中的值应该使用此唯一代码。然后,您可以使用此代码查找产品域对象,以访问其他属性,如价格。
顺便说一句,由于该代码唯一地标识了域对象,因此还应该在
equals
和hashCode
方法中使用它,以确保表示同一域对象的两个示例能够正常工作。