Struts2学习笔记__其他表单标签checkboxlist

checkboxlist标签

  1. checkboxllist标签可以一次创建多个复选框,相当于多个<input type="checkbox"标签> ,它根据list属性指定的集合来生成多个复选框。
  2. 这个标签相当于生成多个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

在这里插入图片描述

扫描二维码关注公众号,回复: 5640040 查看本文章

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();
    }
}


在这里插入图片描述
在这里插入图片描述

加上listKey listValue

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40803626/article/details/88739060