SpringMVC - Form标签(二)

简介: SpringMVC - Form标签(二)

同时我们也要告诉HiddenHttpMethodFilter我们是使用哪个表单参数作为methodParam,所以我们需要在配置HiddenHttpMethodFilter的时候指明methodParam对应的值。


<filter>  
   <filter-name>hiddenHttpMethodFilter</filter-name>  
   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
   <init-param>  
       <param-name>methodParam</param-name>  
       <param-value>requestMethod</param-value>  
   </init-param>  
</filter>  
<filter-mapping>  
   <filter-name>hiddenHttpMethodFilter</filter-name>  
   <url-pattern>/*</url-pattern>  
</filter-mapping> 

另外需要注意的是在有Multipart请求处理的时候HiddenHttpMethodFilter需要在Multipart处理之后执行,因为在处理Multipart时需要从POST请求体中获取参数。所以我们通常会在HiddenHttpMethodFilter之前设立一个MultipartFilter。MultipartFilter默认会去寻找一个名称为filterMultipartResolver的MultipartResolver bean对象来对当前的请求进行封装。所以当你定义的MultipartResolver的名称不为filterMultipartResolver的时候就需要在定义MultipartFilter的时候通过参数multipartResolverBeanName来指定。


/

<filter>  
   <filter-name>multipartFilter</filter-name>  
   <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>  
   <init-param>  
       <param-name>multipartResolverBeanName</param-name>  
       <param-value>multipartResolver</param-value>  
   </init-param>  
</filter>  
<filter-mapping>  
   <filter-name>multipartFilter</filter-name>  
   <url-pattern>/*</url-pattern>  
</filter-mapping>  
<filter>  
   <filter-name>hiddenHttpMethodFilter</filter-name>  
   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
   <init-param>  
       <param-name>methodParam</param-name>  
       <param-value>requestMethod</param-value>  
   </init-param>  
</filter>  
<filter-mapping>  
   <filter-name>hiddenHttpMethodFilter</filter-name>  
   <url-pattern>/*</url-pattern>  
</filter-mapping>  

2、input 标签

SpringMVC的input标签会被渲染为一个type为text的普通Html input标签。使用SpringMVC的input标签的唯一作用就是它能绑定表单数据。SpringMVC表单标签最大的好处就是它支持数据绑定,当我们的表单标签不需要绑定的数据的时候,我们应该使用普通的Html标签。关于input标签绑定表单数据的方法已经在介绍form标签的时候顺带介绍过了,这里就不再过多的赘述了。

<form:form action="formTag/form.do" method="head" modelAttribute="user" methodParam="requestMethod">  
    <table>  
        <tr>  
            <td>Name:</td><td><form:input path="name"/></td>  
        </tr>  
        <tr>  
            <td>Age:</td><td><form:input path="age"/></td>  
        </tr>  
        <tr>  
            <td colspan="2"><input type="submit" value="提交"/></td>  
        </tr>  
    </table>  
</form:form>  

hidden标签会被渲染为一个type为hidden的普通Html input标签。用法跟input标签一样,也能绑定表单数据,只是它生成的是一个隐藏域。


4、checkbox 标签

checkbox标签会被渲染为一个type为checkbox的普通HTML input标签。checkbox标签也是支持绑定数据的。我们知道checkbox就是一个复选框,有选中和不选中两种状态,那么我们在使用checkbox标签的时候是如何来设定它的状态的呢?checkbox标签的选中与否状态是根据它绑定的值来判断的。


4.1、绑定 boolean 数据

当checkbox绑定的是一个boolean数据的时候,那么checkbox的状态跟该boolean数据的状态是一样的,即true对应选中,false对应不选中。


<form:form action="formTag/form.do" method="post" commandName="user">  
    <table>  
        <tr>  
            <td>Male:</td><td><form:checkbox path="male"/></td>  
        </tr>  
        <tr>  
            <td colspan="2"><input type="submit" value="提交"/></td>  
        </tr>  
    </table>  
</form:form> 

看上面这段代码,这个时候假设我们在渲染该视图之前往ModelMap中添加了一个user属性,并且该user对象有一个类型为boolean的属性male,那么这个时候如果male属性为true则Male那一栏的复选框将会被选中。


4.2、绑定列表数据


这里的列表数据包括数组、List和Set。下面将以List为例讲一下checkbox是如何根据绑定的列表数据来设定选中状态的。现在假设有一个类User,其有一个类型为List的属性roles,如下所示:

public class User {
    private List<String> roles;
    public List<String> getRoles() {
       return roles;
    }
    public void setRoles(List<String> roles) {
       this.roles = roles;
    }
}

那么当我们需要展现该User是否拥有某一个Role的时候,我们可以使用checkbox标签来绑定roles数据进行展现。当checkbox标签的value在我们绑定的列表数据中存在的时候该checkbox将为选中状态。来看下面一段代码:

<form:form action="formTag/form.do" method="post" commandName="user">  
    <table>  
        <tr>  
            <td>Roles:</td>  
            <td>  
               <form:checkbox path="roles" value="role1"/>Role1<br/>  
               <form:checkbox path="roles" value="role2"/>Role2<br/>  
               <form:checkbox path="roles" value="role3"/>Role3  
            </td>  
        </tr>  
    </table>  
</form:form> 

就上面代码而言就是当User拥有role1的时候对应的<form:checkbox path="roles" value="role1"/>就会为选中状态,也就是说roles列表中包含role1的时候该checkbox就会为选中状态。

目录
相关文章
|
前端开发 Java 数据安全/隐私保护
Spring MVC-05循序渐进之数据绑定和form标签库(上)
Spring MVC-05循序渐进之数据绑定和form标签库(上)
10325 0
SpringMVC - Form标签(五)
SpringMVC - Form标签(五)
143 0
SpringMVC - Form标签(五)
|
Java Spring
SpringMVC - Form标签(三)
SpringMVC - Form标签(三)
105 0
SpringMVC - Form标签(三)
|
存储 前端开发 数据库
SpringMVC的form表单标签使用(八)中
SpringMVC的form表单标签使用(八)
266 0
SpringMVC的form表单标签使用(八)中
|
7月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
6月前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
95 1
|
6月前
|
前端开发 Java 应用服务中间件
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
|
7月前
|
前端开发 Java 关系型数据库
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
|
6月前
|
XML Java 数据格式
SpringMVC的XML配置解析-spring18
SpringMVC的XML配置解析-spring18
|
6月前
|
应用服务中间件
从代码角度戳一下springMVC的运行过程-spring16
从代码角度戳一下springMVC的运行过程-spring16