如何使用 jstl 迭代列表列表?
How to iterate list of lists using jstl?
我的控制器中有 4 个列表。产品、价格和数量。我将这些列表放在结果列表中,并通过模型对象将结果列表传递到 jsp 页面。
我想要如下输出。
产品 1
价格 1
数量 1
产品 2
价格2
数量 2
这是代码。
控制器代码
@RequestMapping(value="/demo1")
public ModelAndView demo1(){
List productName=new ArrayList();
List price=new ArrayList();
List qty=new ArrayList();
List result=new ArrayList();
productName.add("iphone");
productName.add("nokia");
price.add("70000");
price.add(2000);
qty.add(1);
qty.add(3);
result.add(productName);
result.add(price);
result.add(qty);
ModelAndView model=new ModelAndView("demo");
model.addObject("result", result);
return model;
}
我正在尝试跟随 jsp 但没有得到想要的输出。
JSP代码
<c:set var="i" value="0" scope="page" />
<c:forEach var="s" items="${result}" varStatus="ctr">
<ul>
<li>${s[i]}
<%-- <ul>
<c:forEach var="s1" items="${s}">
<li>${s1}</li>
</c:forEach>
</ul> --%>
</li>
</ul>
<c:set var="i" value="${i+1}" scope="page" />
</c:forEach>
任何帮助都将是 apreciated.Thanks。
你可以只使用变量 s
<c:forEach var="s" items="${result}" varStatus="ctr">
${s}
</c:forEach>
Java 是一种 Object-Oriented 语言。你应该使用它。
不要创建多个相同大小的列表,每个 属性 对象都有一个列表。使用 3 个字段(例如命名为 name
、price
、qty
)为对象(例如命名为 Product
)创建一个 class,并使用单个列表那些对象。
另外,不要使用 raw 泛型。始终指定泛型类型参数,例如List<String> productName
而不是 List productName
.
public class Product {
private String name;
private double price;
private int qty;
public Product(String name, double price, int qty) {
this.name = name;
this.price = price;
this.qty = qty;
}
public String getName() {
return this.name;
}
public double getPrice() {
return this.price;
}
public int getQty() {
return this.qty;
}
}
List<Product> products = new ArrayList<>();
products.add(new Product("iphone", 70000, 1));
products.add(new Product("nokia", 2000, 3));
ModelAndView model = new ModelAndView("demo");
model.addObject("products", products);
return model;
<c:forEach var="product" items="${products}">
<ul>
<li><c:out value="${product.name}"/></li>
<li><fmt:formatNumber value="${product.price}" type="CURRENCY"/></li>
<li>${product.qty}</li>
</ul>
</c:forEach>
我的控制器中有 4 个列表。产品、价格和数量。我将这些列表放在结果列表中,并通过模型对象将结果列表传递到 jsp 页面。 我想要如下输出。
产品 1
价格 1
数量 1
产品 2
价格2
数量 2
这是代码。
控制器代码
@RequestMapping(value="/demo1")
public ModelAndView demo1(){
List productName=new ArrayList();
List price=new ArrayList();
List qty=new ArrayList();
List result=new ArrayList();
productName.add("iphone");
productName.add("nokia");
price.add("70000");
price.add(2000);
qty.add(1);
qty.add(3);
result.add(productName);
result.add(price);
result.add(qty);
ModelAndView model=new ModelAndView("demo");
model.addObject("result", result);
return model;
}
我正在尝试跟随 jsp 但没有得到想要的输出。
JSP代码
<c:set var="i" value="0" scope="page" />
<c:forEach var="s" items="${result}" varStatus="ctr">
<ul>
<li>${s[i]}
<%-- <ul>
<c:forEach var="s1" items="${s}">
<li>${s1}</li>
</c:forEach>
</ul> --%>
</li>
</ul>
<c:set var="i" value="${i+1}" scope="page" />
</c:forEach>
任何帮助都将是 apreciated.Thanks。
你可以只使用变量 s
<c:forEach var="s" items="${result}" varStatus="ctr">
${s}
</c:forEach>
Java 是一种 Object-Oriented 语言。你应该使用它。
不要创建多个相同大小的列表,每个 属性 对象都有一个列表。使用 3 个字段(例如命名为 name
、price
、qty
)为对象(例如命名为 Product
)创建一个 class,并使用单个列表那些对象。
另外,不要使用 raw 泛型。始终指定泛型类型参数,例如List<String> productName
而不是 List productName
.
public class Product {
private String name;
private double price;
private int qty;
public Product(String name, double price, int qty) {
this.name = name;
this.price = price;
this.qty = qty;
}
public String getName() {
return this.name;
}
public double getPrice() {
return this.price;
}
public int getQty() {
return this.qty;
}
}
List<Product> products = new ArrayList<>();
products.add(new Product("iphone", 70000, 1));
products.add(new Product("nokia", 2000, 3));
ModelAndView model = new ModelAndView("demo");
model.addObject("products", products);
return model;
<c:forEach var="product" items="${products}">
<ul>
<li><c:out value="${product.name}"/></li>
<li><fmt:formatNumber value="${product.price}" type="CURRENCY"/></li>
<li>${product.qty}</li>
</ul>
</c:forEach>