Struts2 【第二章 标签】

一、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>

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值