首页 > 编程 > Java > 正文

SpringMVC 参数绑定意义及实现过程解析

2019-11-26 08:22:45
字体:
来源:转载
供稿:网友

参数绑定的定义

所谓参数绑定,简单来说就是客户端发送请求,而请求中包含一些数据,那么这些数据怎么到达 Controller。从客户端请求key/value数据(比如get请求中包含的数据),经过参数绑定,将key/value数据绑定到controller方法的形参上。springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变量接收。

SpringMVC中默认支持的类型

自定义参数类型进行绑定

对于有些参数类型,由于我们输入的参数的类型与实体类中的参数类型不同,因此导致传值不能成功,此时,需要进行参数类型绑定。下面以Date类型为例介绍怎样进行自定义参数类型绑定。

User.java

import java.util.Date;public class User {	private Integer id;	private String username;	private String sex;	private Date birthday;	public Integer getId() {		return id;	}	public void setId(Integer id) {		this.id = id;	}	public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username == null ? null : username.trim();	}	public String getSex() {		return sex;	}	public void setSex(String sex) {		this.sex = sex == null ? null : sex.trim();	}	public Date getBirthday() {		return birthday;	}	public void setBirthday(Date birthday) {		this.birthday = birthday;	}}

JSP页面:注意输入框的 name 属性值和上面 POJO 实体类的属性保持一致即可映射成功。

<form action="pojo" method="post">    用户id:<input type="text" name="id" value="2"></br>    用户名:<input type="text" name="username" value="Marry"></br>    性别:<input type="text" name="sex" value="女"></br>    出生日期:<input type="text" name="birthday" value="2017-08-25"></br>    <input type="submit" value="提交">  </form>

因为我们输入的birthday是String类型,但是实体类中的birthday是Date类型,此时,就不会绑定成功,请求相应的controller会出现如下错误:

因此我们需要进行参数绑定。

参数绑定主要包括两步:

1. 新建一个类实现Converter接口

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; import org.springframework.core.convert.converter.Converter; //需要实现Converter接口,这里是将String类型转换成Date类型public class DateConverter implements Converter<String, Date> {   @Override  public Date convert(String source) {    //实现将字符串转成日期类型(格式是yyyy-MM-dd HH:mm:ss)    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    try {      return dateFormat.parse(source);    } catch (ParseException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }    //如果参数绑定失败返回null    return null;  }}

2. 在配置文件中进行配置

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>  <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">    <property name="converters">      <!-- 自定义转换器的类名 -->      <bean class="com.ys.util.DateConverter"></bean>    </property>  </bean>

这样就完成了自定义参数类型的绑定。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表