我的servlet生成并向jsp发送一个数组。如何实现以下结果:
如果item =" dress",print.out"蓝色连衣裙,尺寸:中等"
Servlet部分:
ArrayList<LinkedHashMap<String, String>> listData = new ArrayList<LinkedHashMap<String, String>>();
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("item", "dress");
linkedHashMap.put("desc", "blue dress");
linkedHashMap.put("size", "medium");
listData.add(linkedHashMap);
linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("item", "t-shirt");
linkedHashMap.put("desc", "white dress");
linkedHashMap.put("size", "small");
listData.add(linkedHashMap);
request.setAttribute("dataList", listData);
JSP部分:
if (request.getAttribute("dataList") != null) {
ArrayList basicList = (ArrayList) request.getAttribute("dataList");
for (int i=0; i < basicList.size(); i++) {
System.out.println(basicList.get(i));
}
}
结果
{item=dress, desc=blue dress, size=medium}
{item=t-shirt, desc=white dress, size=small}
如何实现以下结果:if item =&#34; dress&#34 ;, print&#34; blue dress,size:medium&#34;
答案 0 :(得分:1)
如果要在JSP中显示内容,请使用适当的技术,这些是EL和JSTL:
<c:forEach items="${dataList}" var="dress">
<p>${dress['desc']}, size: ${dress['size']} </p>
</c:forEach>
答案 1 :(得分:1)
你必须使用LinkedHashMap吗?我认为使用ArrayList和一个单独的类具有desc和size作为属性会更容易。这将是班级:
public class Item {
public String desc;
public String size;
public Item (String desc, String size) {
this.desc = desc;
this.size = size;
}
}
我猜你也可以使用enum作为大小(因为它只会是“小”,“中”,“大”等等。)
你的Servlet部分看起来像这样:
ArrayList<Item> listData = new ArrayList<Item>();
listData.add(new Item("blue dress", "medium"));
listData.add(new Item("white dress", "small"));
request.setAttribute("dataList", dataList);
你的JSP部分是这样的:
if (request.getAttribute("dataList") != null) {
ArrayList basicList = (ArrayList) request.getAttribute("dataList");
Item myItem = null;
for (int i=0; i < basicList.size(); i++) {
myItem = (Item)basicList.get(i)
System.out.println(myItem.desc + ", size: " + myItem.size);
}
}
我没有尝试代码,但我认为这应该有效。