【SpringMVC】表单库标签

SpringMVC 提供了一些标签库,可以帮助我们实现数据绑定。使用方法如下

创建工程

参考 【SpringMVC】SpringMVC入门实例创建一个SpringMVC工程
创建完工程工程目录如下:
在这里插入图片描述
pom.xml中引入标签库

 <dependency>
     <groupId>org.apache.taglibs</groupId>
     <artifactId>taglibs-standard-spec</artifactId>
     <version>1.2.5</version>
 </dependency>
 <dependency>
     <groupId>org.apache.taglibs</groupId>
     <artifactId>taglibs-standard-impl</artifactId>
     <version>1.2.5</version>
 </dependency>

引入标签库

在jsp界面写入如下代码段

<%@taglib uri="http://www.springframework.org/tags/form"  prefix="form" %>

完整的login.jsp页面如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://www.springframework.org/tags/form"  prefix="form" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form:form modelAttribute="user" action="${pageContext.request.contextPath}/index/add" method="post">
    <div>
        名字:<form:input path="name" />
    </div>
    <div>
        年龄:<form:input path="age"/>
    </div>
    <div>
        <input type="submit" value="添加用户">
    </div>
</form:form>
</body>
</html>

Controller

在访问方法上加上Model参数,把需要传递的数据放到model中

@Controller
public class LoginControl {

    @RequestMapping(value = "/index/login")
    public String login(Model model){
        User user = new User();
        user.setName("lucas");
        user.setId(1);
        user.setAge(18);
        model.addAttribute("user",user);
        return  "login";
    }
}

执行结果如下
在这里插入图片描述

表单标签

form标签

一般情况下,通过 GET 请求获取表单页面,而通过POST 请求提交表单页面,因此获取表单页面和提交表单页面的 URL 是相同的。只要满足该最佳条件的契约,form:form 标签就无需通过 action 属性指定表单提交的 URL

可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,则默认从 request 域对象中读取command 的表单 bean,如果该属性值也不存在,则会发生错误。

form标签的属性如下:

属性 描述
属性 描述
commandName form绑定的模型属性名称,默认为command
acceptCharset 定义服务器接受的字符编码
cssClass 定义要应用到被渲染的form元素CSS类
cssStyle 定义要应用到被渲染的form元素CSS样式
htmlEscape boolean值,表示被渲染的值是否应该进行HTML转义

SpringMVC提供了多个表单组件标签,如form:input/、form:select/ 等,用以绑定表单字段的属性值,它们的共有属性如下:

path:表单字段,对应 html 元素的 name 属性,支持级联属性

htmlEscape:是否对表单值的 HTML 特殊字符进行转换,默认值为 true

cssClass:表单组件对应的 CSS样式类名

cssErrorClass:表单组件的数据存在错误时,采取的 CSS样式

input标签

input标签语法格式如下:

<form:input path="***"/>

password标签

password标签的用法跟input标签相似,也能绑定表单数据,只是它生成的是一个密码框,并且多了一个showPassword属性

<form:password path="password"/>

hidden标签

用法跟input相似,也能绑定表单数据,只是它生成的是一个隐藏域

<form:hidden path="id"/>

textarea标签

是一个支持多行输入的HTML元素

<form:textarea path="remark" rows="5" cols="20"/>

checkbox标签

会被渲染为一个类型为checkbox的普通HTML input标签

<!-- label为被渲染的复选框的值 -->
<form:form method="post" action="checkboxForm" modelAttribute="user">
    <!-- 当绑定的为数组、List、Set时,checkbox的value属性在绑定的列表数据中存在则为选中状态 -->
    <form:checkbox path="friends" value="张三" label="张三"/>;
    <form:checkbox path="friends" value="李四" label="李四"/>;
    <form:checkbox path="friends" value="王五" label="王五"/>;
    <!-- 当绑定的是一个boolean数据时,true为选中,false为不选中 -->
    <form:checkbox path="reader" value="true"/>已经阅读相关协议
</form:form>

checkboxes标签

checkboxes标签 属性如下:

属性 描述
items 可以是一个 List、String[] 或 Map
itemLabel 指定 checkbox的 value 值,可以是集合中 bean 的一个属性值
itemValue 指定 checkbox 的 label值,可以是集合中 bean 的一个属性值
delimiter 定义两个input元素之间的分隔符,默认没有分隔符
<form:form modelAttribute="employee" method="post" action="checkboxForm2">
    <form:checkboxes path="depts" items="${deptList}" itemLabel="name" itemValue="id"/>
</form:form>

radiobutton标签

会被渲染为一个类型为radio的普通HTML input标签

<form:form action="radiobuttionForm" method="post" modelAttribute="student">
    <form:radiobutton path="sex" value=""/><br/>
    <form:radiobutton path="sex" value=""/></form:form>

select、option、options标签

属性 描述
items 用于生成option列表元素的对象的Collection、Map或者Array
itemLabel item属性中定义的对象属性,为每个option提供label
itemValue item属性中定义的对象属性,为每个option提供value
<form:form modelAttribute="user" method="post" action="selectForm">
    <!-- items属性可以自动加载后台传递过来的数据 -->
    <%--部门:<form:select path="deptId" items="${deptMap}"></form:select>--%>
    <!-- 若没有自动加载,可以使用option属性手动添加 -->
    部门:<form:select path="deptId">
            <form:option value="1">开发部</form:option>
            <form:option value="2">财务部</form:option>
            <form:option value="3">销售部</form:option>
        </form:select>
</form:form>

errors标签

<form:errors path= “ *” /> :显示表单所有的错误

<form:errors path= “ user*” /> :显示所有以 user 为前缀的属性对应的错误

<form:errors path= “ username” /> :显示特定表单对象属性的错误

猜你喜欢

转载自blog.csdn.net/huweiliyi/article/details/107832814