4.1.6 checkbox标签
Spring MVC
的checkbox
标签会被渲染为一个类型为checkbox
的普通HTML input
标签。
checkbox
标签可使用如表4.7所示的属性。 表4.7中列出的只是Spring MVC
的checkbox
标签的常用属性, 并没有包含HTML
中的相关属性。
属性 |
描述 |
cssClass |
义要应用到被渲染的checkbox 元素的CSS 类 |
cssStyle |
义要应用到被渲染的checkbox 元素的CSS 样式 |
cssErrorClass |
定义要应用到被渲染的checkbox 元素的CSS 类,如果bound 属性中包含错误,则覆盖cssClass 属性值 |
htmlEscape |
boolean 值,表示被渲染的值是否应该进行HTML 转义 |
path |
要绑定的属性路径 |
label |
要作为label 被渲染的复选框的值 |
1. 绑定boolean数据
当checkbox
绑定的是一个boolean
数据时,checkbox
的状态跟被绑定的boolean
数据的状态是一样的, 即为true
时复选框选中, 为false
时复选框不选中。
2. 绑定列表数据
**这里的列表数据包括数组、List和Set**。
假设有一个User
类,User
类有一个类型为List
的属性courses
。 当我们需要显示该User
的courses
时, 可以使用checkbox
标签来绑定courses
数据进行显示。 当checkbox
标签的value
属性在我们绑定的列表数据中存在时该checkbox
将为选中状态。
示例: checkbox标签的使用
项目结构
展开/折叠
G:\Desktop\随书源码\Spring+Mybatis企业应用实战(第2版)\codes\04\CheckboxTest
├─src\
│ └─org\
│ └─fkit\
│ ├─controller\
│ │ └─UserController.java
│ └─domain\
│ └─User.java
└─WebContent\
├─META-INF\
│ └─MANIFEST.MF
└─WEB-INF\
├─content\
│ └─checkboxForm.jsp
├─lib\
│ ├─commons-logging-1.2.jar
│ ├─spring-aop-5.0.1.RELEASE.jar
│ ├─spring-aspects-5.0.1.RELEASE.jar
│ ├─spring-beans-5.0.1.RELEASE.jar
│ ├─spring-context-5.0.1.RELEASE.jar
│ ├─spring-context-indexer-5.0.1.RELEASE.jar
│ ├─spring-context-support-5.0.1.RELEASE.jar
│ ├─spring-core-5.0.1.RELEASE.jar
│ ├─spring-expression-5.0.1.RELEASE.jar
│ ├─spring-instrument-5.0.1.RELEASE.jar
│ ├─spring-jcl-5.0.1.RELEASE.jar
│ ├─spring-jdbc-5.0.1.RELEASE.jar
│ ├─spring-jms-5.0.1.RELEASE.jar
│ ├─spring-messaging-5.0.1.RELEASE.jar
│ ├─spring-orm-5.0.1.RELEASE.jar
│ ├─spring-oxm-5.0.1.RELEASE.jar
│ ├─spring-test-5.0.1.RELEASE.jar
│ ├─spring-tx-5.0.1.RELEASE.jar
│ ├─spring-web-5.0.1.RELEASE.jar
│ ├─spring-webflux-5.0.1.RELEASE.jar
│ ├─spring-webmvc-5.0.1.RELEASE.jar
│ └─spring-websocket-5.0.1.RELEASE.jar
├─springmvc-config.xml
└─web.xml
User.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package org.fkit.domain;
import java.io.Serializable; import java.util.List;
public class User implements Serializable { private static final long serialVersionUID = 1L; private boolean reader; private List<String> courses; public User() { super(); } public boolean isReader() { return reader; } public void setReader(boolean reader) { this.reader = reader; } public List<String> getCourses() { return courses; } public void setCourses(List<String> courses) { this.courses = courses; } }
|
解析
User
类中有一个boolean
类型的变量reader
和List<String>
类型的变量courses
, 分别用来测试checkbox
绑定boolean
数据和绑定列表数据。
UserController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package org.fkit.controller;
import java.util.ArrayList; import java.util.List; import org.fkit.domain.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping;
@Controller public class UserController { @GetMapping(value = "/checkboxForm") public String registerForm(Model model) { User user = new User(); user.setReader(true); List<String> list = new ArrayList<String>(); list.add("JavaEE"); list.add("Mybatis"); list.add("xxxx"); user.setCourses(list); model.addAttribute("user", user); return "checkboxForm"; } }
|
代码分析
在UserController
中创建了User
对象, 并分别设置了变量reader
和courses
的值, 并将它们添加到Model
中和页面进行绑定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试checkbox标签</title> </head> <body> <h3>form:checkbox测试</h3> <form:form modelAttribute="user" method="post" action="checkboxForm"> <table> <tr> <td>选择课程:</td> <td><form:checkbox path="courses" value="JavaEE" label="JavaEE" /><br> <form:checkbox path="courses" value="Mybatis" label="Mybatis" /><br> <form:checkbox path="courses" value="Spring" label="Spring" /><br> <!-- 浏览器将会显示lable标签中的内容 --> <form:checkbox path="courses" value="JDBC" label="xxxx" /><br></td> </tr> </table> <form:checkbox path="reader" value="false" />已经阅读相关协议 </form:form> </body> </html>
|
web.xml
文件和springmvc-config.xml
文件与之前讲述的一致, 此处不再赘述。
测试
部署CheckboxTest
这个Web
应用, 在浏览器中输入如下URL
来测试应用:
http://localhost:8080/CheckboxTest/checkboxForm
渲染效果
1 2 3 4 5 6 7 8 9 10 11 12 13
| <h3>form:checkbox测试</h3> <form id="user" action="checkboxForm" method="post"> <table> <tbody><tr> <td>选择课程:</td> <td><input id="courses1" name="courses" type="checkbox" value="JavaEE" checked="checked"><label for="courses1">JavaEE</label><input type="hidden" name="_courses" value="on"><br> <input id="courses2" name="courses" type="checkbox" value="Mybatis" checked="checked"><label for="courses2">Mybatis</label><input type="hidden" name="_courses" value="on"><br> <input id="courses3" name="courses" type="checkbox" value="Spring"><label for="courses3">Spring</label><input type="hidden" name="_courses" value="on"><br> <input id="courses4" name="courses" type="checkbox" value="JDBC"><label for="courses4">xxxx</label><input type="hidden" name="_courses" value="on"><br></td> </tr> </tbody></table> <input id="reader1" name="reader" type="checkbox" value="true" checked="checked"><input type="hidden" name="_reader" value="on">已经阅读相关协议 </form>
|