• SpringMVC中的参数绑定


    SpringMVC中的参数绑定

      参数绑定的定义

      所谓参数绑定,简单来说就是客户端发送请求,而请求中包含一些数据,那么这些数据怎么到达 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>

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

  • 相关阅读:
    [转]Asp.NET MVC Widget开发
    [转]让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
    [转]jquery Fancybox丰富的弹出层效果
    [转]响应式网页设计:rem、em设置网页字体大小自适应
    [转]jQuery Popup Login and Contact Form
    [转][ASP.NET MVC 小牛之路]12
    [转]jQuery插件实现模拟alert和confirm
    [转]Ionic 实现双击返回键退出功能
    [转]Ionic – Mobile UI Framework for PhoneGap/Cordova Developers
    [转]VS2015 cordova尝试-camera
  • 原文地址:https://www.cnblogs.com/Demrystv/p/9396224.html
Copyright © 2020-2023  润新知