checkboxlist标签
- checkboxllist标签可以一次创建多个复选框,相当于多个<input type="checkbox"标签> ,它根据list属性指定的集合来生成多个复选框。
- 这个标签相当于生成多个HTML的<checkbox>标签,在这里练习一下表单的提交和经过Action的处理,并指定一个非默认的命名空间。当<checkboxlist>使用Map创建一系列<checkbox>时需要特别注意外显和内涵。
语法
<s:checkboxlist name="" list="" listKey="" listValue="" value="" />
使用s:checkboxlist标签
value:哪些被选中
name:提交到服务端用的名称
list:用于遍历的集合
listValue:显示的checkbox的名称
listKey:checkbox的value
注:listKey相当于HTML中的value属性,这个值在和后台交互时才真正是我们在后台要使用的;listValue只是内容的显示而已。
name属性
name定义标签名,用于接收画面上选中的复选框,故应与Action里定义的属性一致
,且多为数组;<s:checkboxlist list="foodList" name="food" label="food"/>
list属性
list定义集合变量,用于输出复选框到画面上,一般在Action里定义一个List或Map属性
;
listkey属性
listKey如果在Action里定义的是一个List,则往往会在List里定义一个Bean
,它只有两个属性,其中一个(比如id)就在这里设置;
如果在Action里定义的是一个Map,则Map的key就在这里设置;
listKey=“roleId” 这里的roleId对应后台roleuserList中role这个bean的属性roleId,listKey也是将要传入后台的值;
listValue属性
listValue如果在Action里定义的是一个List,则往往会在List里定义一个Bean,它只有两个属性,另外一个(比如name)就在这里设置;
如果在Action里定义的是一个Map,则Map的value就在这里设置;
listValue=“roleName” 自然是显示在页面上的内容了;就是显示在浏览器页面的
value属性
用于回显画面上被选中的复选框,假如画面有输入检查,如果有错则返回原画面并显示出错信息,这时候就需要使用它。 一般把它设成和name一致就可以
了。
value="#request.rolelist.{roleId}" 这句话的意思是,给s:checkboxlist选取默认值,将对应后台放入request作用域的rolelist这个list中的roleid组合成数组,
类似{1,2,3}这种,然后标签会自动匹配。
默认先中一个
<s:checkboxlist name="con" list="#{'0':'用户1','1':'用户2','2':'用户3'}" value="1" > </s:checkboxlist>
默认选中一个将value设置成选中的value值,这里将默认选中用户2
默认选中多个
<s:checkboxlist name="con" list="#{'0':'用户1','1':'用户2','2':'用户3'}" value="#{'0','2'}" > </s:checkboxlist>
1
①集合为list
<s:checkboxlist name="list" list="{'Java','.Net','RoR','PHP'}" value="{'Java','.Net'}" />
生成html
2
②集合为MAP
<s:checkboxlist name="map" list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}"
listKey="key" listValue="value" value="{1,2,3}" />
生成html
3
③集合里存放javabean(id和name为Person的属性)
<%
Person person1 = new Person(1, "小明");
Person person2 = new Person(2, "小红");
List<Person> list = new ArrayList<Person>();
list.add(person1);
list.add(person2);
request.setAttribute("persons", list);
request.setAtttibute("pchecked",person1);
%>
<s:checkboxlist name="beans" list="#request.persons"
listKey="id" listValue="name" value="#request.pchecked.id" />
Action
package action;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Arrays;
/**
* @ Author : Rain
* @ Classname : TestAction
* @ Date : 2019/3/21 20:34
* @ Description:
*/
public class TestAction extends ActionSupport {
private String[] list;
private String[] map;
private String[] beans;
public String[] getList() {
return list;
}
public void setList(String[] list) {
this.list = list;
}
public String[] getMap() {
return map;
}
public void setMap(String[] map) {
this.map = map;
}
public String[] getBeans() {
return beans;
}
public void setBeans(String[] beans) {
this.beans = beans;
}
public String test()
{
System.out.println(Arrays.toString(list));
return SUCCESS;
}
}
jsp
<%@ page import="action.Person" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: Rain
Date: 2019/3/21
Time: 20:17
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title></title>
</head>
<body>
<s:form action="test" name="aaa">
<s:checkboxlist name="list" list="{'Java','.Net','RoR','PHP'}" value="{'Java','.Net'}"/>
生成html
②集合为MAP
<s:checkboxlist name="map" list="# {1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}"
listKey="key" listValue="value" value="{1,2,3}"/>
生成html
③集合里存放javabean(id和name为Person的属性)
<%
Person person1 = new Person(1, "小明");
Person person2 = new Person(2, "小红");
List<Person> list = new ArrayList<Person>();
list.add(person1);
list.add(person2);
request.setAttribute("persons", list);
request.setAttribute("pchecked", person1);
%>
<s:checkboxlist name="beans" list="#request.persons"
listKey="id" listValue="name" value="#request.pchecked.id"/>
<s:submit name="submit"></s:submit>
</s:form>
</body>
</html>
struts.xml
<action name="test" class="action.TestAction" method="test">
<result name="success"></result>
</action>
可以定义集合或数组接收值,比如定义List可以接收上面③传来的值。
案例
checkBoxlist.jsp
<%--
Created by IntelliJ IDEA.
User: Rain
Date: 2019/3/21
Time: 20:16
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>20177721047任思雨</title>
</head>
<body>
<h1>Struts 2 multiple check boxes example</h1>
<s:form action="support">
<s:checkboxlist list="foodList" name="food" label="food"/>
<br>
<s:checkboxlist list="hobbyList" name="hobby" label="hobby"/>
<br>
<s:checkboxlist name="sds" list="{'一辉','撒卡','童虎','加隆'}" label="请选择你所喜欢的圣斗士">
</s:checkboxlist>
<s:checkboxlist name="b" list= "# {'凤凰座':'一辉','双子座':'撒卡','白羊座':'史昂','天枰座':'童虎'}" label="请选择你最喜欢的圣斗士" labelposition="top"
listKey="value" listValue="key"></s:checkboxlist>
<s:submit value="submit" name="submit" />
</s:form>
</body>
</html>
TestAction.java https://hhaism.iteye.com/blog/1122100
package action;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
/**
* @ Author : Rain
* @ Classname : TestAction
* @ Date : 2019/3/21 20:34
* @ Description:
*/
public class TestAction extends ActionSupport {
private List foodList;
private List hobbyList;
private String[] b;
public String[] getB() {
return b;
}
public void setB(String[] b) {
this.b = b;
}
public List getFoodList() {
return foodList;
}
public List getHobbyList() {
return hobbyList;
}
@Override
public String execute() throws Exception {
foodList = new ArrayList<String>();
foodList.add("milk");
foodList.add("rice");
foodList.add("noodles");
hobbyList = new ArrayList<String>();
hobbyList.add("football");
hobbyList.add("basketball");
hobbyList.add("volleyball ");
return SUCCESS;
}
}
CheckBoxListAction.java
package action;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Arrays;
/**
* @ Author : Rain
* @ Classname : CheckBoxListAction
* @ Date : 2019/3/21 20:16
* @ Description:
*/
public class CheckBoxListAction extends ActionSupport {
private String[] food;
private String[] hobby;
private String[] sds;
public String[] getSds() {
return sds;
}
public void setSds(String[] sds) {
this.sds = sds;
}
public String[] getFood() {
return food;
}
public void setFood(String[] food) {
this.food = food;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
@Override
public String execute() throws Exception {
System.out.println(Arrays.toString(food));
System.out.println(Arrays.toString(hobby));
System.out.println(Arrays.toString(sds));
return super.execute();
}
}