如何循环遍历具有 LinkedHashMap 的 ArrayList ?
How to loop through ArrayList that has LinkedHashMap ?
我的 servlet 生成一个数组并将其发送到 jsp。我怎样才能达到以下结果:
如果项目 = "dress", print.out "blue dress, size: medium"
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 = "dress", print "blue dress, size: medium"
如果您想在 JSP 中显示某些内容,请使用适当的技术,这些是 EL 和 JSTL:
<c:forEach items="${dataList}" var="dress">
<p>${dress['desc']}, size: ${dress['size']} </p>
</c:forEach>
你必须使用 LinkedHashMap 吗?我认为使用 ArrayList 和单独的 class Item with desc 和 size 作为属性会容易得多。这将是 class:
public class Item {
public String desc;
public String size;
public Item (String desc, String size) {
this.desc = desc;
this.size = size;
}
}
我想你也可以使用枚举来表示大小(因为它只会是 "small"、"medium"、"large" 等等)。
您的 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);
}
}
我没有尝试该代码,但我认为这应该可行。
我的 servlet 生成一个数组并将其发送到 jsp。我怎样才能达到以下结果:
如果项目 = "dress", print.out "blue dress, size: medium"
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 = "dress", print "blue dress, size: medium"
如果您想在 JSP 中显示某些内容,请使用适当的技术,这些是 EL 和 JSTL:
<c:forEach items="${dataList}" var="dress">
<p>${dress['desc']}, size: ${dress['size']} </p>
</c:forEach>
你必须使用 LinkedHashMap 吗?我认为使用 ArrayList 和单独的 class Item with desc 和 size 作为属性会容易得多。这将是 class:
public class Item {
public String desc;
public String size;
public Item (String desc, String size) {
this.desc = desc;
this.size = size;
}
}
我想你也可以使用枚举来表示大小(因为它只会是 "small"、"medium"、"large" 等等)。
您的 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);
}
}
我没有尝试该代码,但我认为这应该可行。