一、FORM标签
1、修改addProduct.jsp
与jstl标准标签库类似的,struts有专属标签库
form标签用于提交数据
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<s:form action="addProduct">
<s:textfield name="product.name" label="product name" />
<s:submit value="Submit" />
</s:form>
</body>
</html>
struts把表单里的内容自动转换成了table
二、S:ITERATOR标签遍历集合
与JSTL标准标签库的c:forEach类似的,struts也提供了一个s:iterator用于遍历一个集合中的数据。
value 表示集合
var 表示遍历出来的元素
st 表示遍历出来的元素状态
st.index 当前行号 基0
st.count 当前行号 基1
st.first 是否是第一个元素
st.last 是否是最后一个元素
st.odd 是否是奇数
st.even 是否是偶数
1、ProductAction中,增加属性和初始化方法:
private ArrayList<Product> products;
public String list(){
products = new ArrayList<Product>();
Product product1 = new Product();
product1.setName("iphone7");
Product product2 = new Product();
product2.setName("iphone8");
Product product3 = new Product();
product3.setName("iphone9");
products.add(product1);
products.add(product2);
products.add(product2);
System.out.println("method list");
return "list";
}
2、struts.xml中配置listProducts的action
<action name="listProducts" class="com.web.action.ProductAction" method="list">
<result name="list">listProducts.jsp</result>
</action>
3、listProducts.jsp中使用s:iterator进行集合products的遍历
<table align="center">
<tr>
<td>id</td>
<td>name</td>
</tr>
<s:iterator value="products" var="product" status="st">
<tr>
<td>${product.id}</td>
<td>${product.name}</td>
</tr>
</s:iterator>
</table>
三、CHECKBOXLIST使用
listProducts.jsp增加以下代码
<s:checkboxlist value="selectedProducts" name="product.id"
list="products" listValue="name" listKey="id" />
用s:checkboxlist标签
value:哪些被选中
name:提交到服务端用的名称
list:用于遍历的集合
listValue:显示的checkbox的名称
listKey:checkbox的value
四、单选框RADIO使用
listProducts.jsp增加以下代码
<s:radio name="product.id" value="2" list="products" listValue="name"
listKey="id" />
五、SELECT标签使用
<s:select label="products select" list="products"
name="product.id" listKey="id" listValue="name" multiple="true"/>
六、多重迭代-使用ITERATOR 迭代遍历集合中的集合
1、新增model Category,包含List的product,一对多关系
public class Category {
private int id;
private String name;
private ArrayList<Product> products;
}
2、ProductAction中,增加方法categoryList(),进行初始化
public String categoryList(){
Categories = new ArrayList<Category>();
Category Category1 = new Category();
Category Category2 = new Category();
products1 = new ArrayList<Product>();
products2 = new ArrayList<Product>();
Product product1 = new Product();
Product product2 = new Product();
Product product3 = new Product();
Product product4 = new Product();
Product product5 = new Product();
Product product6 = new Product();
product1.setId(1);
product1.setName("iphone7");
product2.setId(2);
product2.setName("iphone8");
product3.setId(3);
product3.setName("iphone9");
product4.setId(4);
product4.setName("iphone4");
product5.setId(5);
product5.setName("iphone5");
product6.setId(6);
product6.setName("iphone6");
products1.add(product1);
products1.add(product2);
products1.add(product3);
products2.add(product4);
products2.add(product5);
products2.add(product6);
Category1.setId(1);
Category2.setId(2);
Category1.setName("ct1");
Category2.setName("ct2");
Category1.setProducts(products1);
Category2.setProducts(products2);
Categories.add(Category1);
Categories.add(Category2);
return "categories";
}
3、categories.jsp显示数据,通过嵌套iterator
<body>
<table>
<s:iterator value="Categories" var="category">
${category.products}
</s:iterator>
<table border="1" cellspacing="0">
<tr>
<td>id</td>
<td>name</td>
<td>products</td>
</tr>
<s:iterator value="Categories" var="category" status="st">
<tr>
<td>${category.id}</td>
<td>${category.name}</td>
<td>
<s:iterator value="#category.products" var="p">
${p.name}<br>
</s:iterator>
</td>
</tr>
</s:iterator>
</table>
</body>