springmvc--数据转换&数据格式化&数据校验

数据绑定流程如下:

1.springmvc主框架将servletRequest对象及目标方法的实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象

2.DataBinder调用装配在spring mvc上下文中的ConversionService组件进行数据类型转换,格式化工作,将servlet中的请求信息填充到入参对象中

3.调用Validator组件对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定结果BindingData对象

4.spring mvc 抽取BindingResult中的入参对象和校验错误对象,将他们赋给处理方法的响应入参

一.数据转换

1.springmvc 会按请求参数的属性名和POJO的属性名,进行自动匹配。支持级联属性。

2.自定义转换器

2.1自定义转换器实现Converter<S,T>

@Component
public class EmployeeConverter implements Converter<String, Employee> {

    @Override
    public Employee convert(String source) {
        System.out.println("EmployeeConverter..");
        if(source != null){
            String[] args = source.split(",");
            Integer id = Integer.parseInt(args[0]);
            String username = args[1];
            String email = args[2];
            Employee employee = new Employee(id, username, email);
            System.out.println(source+"----convert----"+employee);
            return employee;
        }
        return null;
    }
}

2.2 在springmvc的配置文件中,配置如下

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
    <bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters" ref="employeeConverter"></property>
    </bean>

二.数据格式化

将前台的输入数据都是通过String类型传给后台的,如果entity的属性是基本类型,那么是可以正常转换的,

但是如果某些属性是java.util.Date或者是float,则不知道按什么何种格式来转换,这个是则需要如下注解标记,告诉服务器按什么格式来转换

@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birth;
@NumberFormat(pattern="#,###,###.#")
private float salary;

当前台输入的数据不满足以上格式的时候,其转换结果可以在目标方法的方法参数中,注入BindingResult result来获取,示例如下

@RequestMapping(value="testConverter",method={RequestMethod.POST})
    public String testConverter(Employee employee, BindingResult result){
        System.out.println("SpringmvcTest.testConverter");
        if(result.getErrorCount() > 0){
            List<FieldError> fieldErrors = result.getFieldErrors();
            for(FieldError error : fieldErrors){
                System.out.println(error.getField() + ":" + error.getDefaultMessage());
            }
        }
        System.out.println(employee);
        return "success";
    }

三.数据校验

JSR303是一个JAVA BEAN校验的规范,但是springmvc 没有对其进行实现,hibernate validator对齐进行了实现。

具体流程如下:

1.加入 hibernate validator 的jar包

2.在对应需要验证的bean上就注解

3.后台的到错误消息,BindingResult

4.前台得到错误消息,<form:errors path="属性名"></form:errors>

5.如何定制消息,

在springmvc的配置文件中中配置

<bean class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="i18n"></property>
</bean>

src下面添加i18n.properties属性文件,键值对如何写(验证用的注解.entity名.属性名=消息)

注意事项,

springmvc的配置文件中,必须已经配置了

<mvc:annotation-driven ></mvc:annotation-driven>

还有就是目标方法的验证对象前面加@Valid,才会验证

时间: 2024-10-27 12:10:45

springmvc--数据转换&数据格式化&数据校验的相关文章

Spring MVC(三) 数据转换、格式化、校验

数据转换.格式化.校验 数据绑定机理 数据类型转换 低版本的Spring 只支持标准的PropertyEditor类型体系,不过PropertyEditor存在以下缺陷: 只能用于字符串和Java对象的转换,不适用于任意两个Java类型之间的转换: 对源对象及目标对象所在的上下文信息(如注解.所在宿主类的结构等)不敏感,在类型转换时不能利用这些上下文信息实施高级转换逻辑.有鉴于此,Spring 3.0在核心模型中添加了一个通用的类型转换模块,ConversionService是Spring类型转

SpringMVC 数据转换 &amp; 数据格式化 &amp; 数据校验

数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象2. DataBinder 调用装配在 Spring MVC 上下文中的 ConversionService 组件进行数据类型转换.数据格式化工作.将 Servlet 中的请求信息填充到入参对象中3. 调用 Validator 组件对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定

SpringMVC——数据转换 &amp; 数据格式化 &amp; 数据校验

一.数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方 法的入参实例传递给 WebDataBinderFactory 实例,以创 建 DataBinder 实例对象 2. DataBinder 调用装配在 Spring MVC 上下文中的 ConversionService 组件进行数据类型转换.数据格式 化工作.将 Servlet 中的请求信息填充到入参对象中 3. 调用 Validator 组件对已经绑定了请求消息的入参对象 进行数据合法性校验,并

SpringMVC的数据转换&amp;&amp;数据格式化&amp;&amp;数据校验

1 SpringMVC的数据绑定流程 SpringMVC将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象. DataBinder调用装配在SpringMVC上下文中ConversionService组件进行数据类型转换.数据格式化工作.将Servlet中的请求信息填充到入参对象中. 调用Validator组件对已经绑定了请求信息的入参对象进行数据合法性校验,并最终生成数据绑定结果BindingData对象

SpringMVC的数据转换、格式化和数据校验

SpringMVC会根据请求方法签名不同,将请求信息中的信息以一定的方式转换并绑定到请求方法的参数中.在请求消息到达真正调用处理方法的这一段时间内,SpringMVC还会完成很多其他的工作,包括请求信息转换.数据转换.数据格式化以及数据校验等. 一.数据绑定 数据绑定的核心部件是DataBinder,SpringMVC框架将ServletRequest对象及处理方法的参数对象实例传递给DataBinder,DataBinder调用装配在SpringWeb上下文中的ConversionServic

SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息

在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.springframework.org/schema/mvc" 一.作用: 1.会自动注册 RequestMappingHandlerMapping.RequestMappingHandlerAdapter 以及 ExceptionHandlerExceptionResolver 三个 Bean. 若配置该注

SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/

【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat

作者:ssslinppp       1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC-8]SpringMVC之类型转换Converter>(对应链接: http://www.cnblogs.com/ssslinppp/p/4598102.html ) 中讲解了Spring MVC的类型转换,在此回顾下. 数据格式化,从本质上讲属于数据转换的范畴.Spring就是基于数据转换框架植入&q

SpringMVC数据格式化,介绍了解一下

7.3.数据格式化在如Web /客户端项目中,通常需要将数据转换为具有某种格式的字符串进行展示,因此上节我们学习的数据类型转换系统核心作用不是完成这个需求,因此Spring3引入了格式化转换器(Formatter SPI) 和格式化服务API(FormattingConversionService)从而支持这种需求.在Spring中它和PropertyEditor功能类似,可以替代PropertyEditor来进行对象的解析和格式化,而且支持细粒度的字段级别的格式化/解析. Formatter