遍历3个product成为checkbox
并且第2个和第3个是默认选中的
并且第2个和第3个是默认选中的
- ProductAction.java
除了前例中准备的products
再新增一个属性ListselectedProducts,用于存放哪些产品被选中了
注意: ListselectedProducts 里放的是id,而不是对象
package com.how2java.action; import java.util.ArrayList; import java.util.List; import com.how2java.bean.Product; public class ProductAction { private Product product; private List<Product> products; private List<Integer> selectedProducts; public List<Integer> getSelectedProducts() { return selectedProducts; } public void setSelectedProducts(List<Integer> selectedProducts) { this.selectedProducts = selectedProducts; } public List<Product> getProducts() { return products; } public void setProducts(List<Product> products) { this.products = products; } public String show() { product = new Product(); product.setName("iphone7"); return "show"; } public String add() { return "show"; } public String list() { products=new ArrayList(); selectedProducts = new ArrayList(); Product p1 = new Product(); p1.setId(1); p1.setName("product1"); Product p2 = new Product(); p2.setId(2); p2.setName("product2"); Product p3 = new Product(); p3.setId(3); p3.setName("product3"); products.add(p1); products.add(p2); products.add(p3); selectedProducts.add(2); selectedProducts.add(3); return "list"; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } }
- list.jsp
使用s:checkboxlist标签
value:哪些被选中
name:提交到服务端用的名称
list:用于遍历的集合
listValue:显示的checkbox的名称
listKey:checkbox的value
访问后,可以查看源码,会发现struts会自动创建一个个的<Input >这样的标签,标签里面的name属性对应的值刚好就是之前设置的 name="product.id",其实就是给转换后的input标签设置name的属性而已,这样每个<input>的name值就都是“product.id”了,name值一样的checkbox,就会把他们都归为一组了
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@page isELIgnored="false"%> <s:checkboxlist value="selectedProducts" name="product.id" list="products" listValue="name" listKey="id" />
- 测试
重启tomcat,访问页面
http://127.0.0.1:8080/struts/listProduct