0

0

SpringMVC的类型转换及验证方法介绍(附代码)

不言

不言

发布时间:2018-09-28 15:54:29

|

1835人浏览过

|

来源于博客园

转载

本篇文章给大家带来的内容是关于springmvc的类型转换及验证方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Spring mvc 数据绑定流程:

SpringMvc将ServletRequest对象及目标方法的形参实例传给WebDataBinderFactory实例,以创建DataBinder实例对象。DataBinder调用装配在SpringMvc上下文中的ConversionService组件进行类型转换和数据格式化工作,将Servlet请求信息填充到形参对象中。调用Validator主键对已经绑定了请求信息的形参对象精选数据有效性验证,并最终生成数据绑定结果BindingData对象。SpringMVC抽取BindingResult中的形参对象和校验错误对象,将他们赋给处理方法的相应参数

我们查看源代码可以看到,通过WebDataBinderFactory创建DataBinder对象

自定义类型转换器

当我们碰到一些特殊场合,有可能需要我们自己定义类型转换器。下麦呢来讲解一个自定义类型转器,将字符串转换成emp对象,当页面无法完成数据绑定或者类型转换时,springmvc会抛出异常,异常信息可以使用BindingResult来进行获取。

Spring定义了三种类型的转换器接口,实现任意一个转换器接口都可以作为自定义转换器注册到ConversionServiceFactoryBean中。

Convertre:将S类型转换为T类型。

ConverterFactory:将相同系类的多个“同质”Converter封装在一起,如果希望一种类型转换成另一种类型以及子类对象(例如String转换成Number以Number的子类),可以使用该转换器

GenericConverter:会根据源类对象以及目标类对象所在的宿主类中的上下文信息精选类型转换。

萝卜简历
萝卜简历

免费在线AI简历制作工具,帮助求职者轻松完成简历制作。

下载
package com.spring.mvc.controller;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
@Component
public class UserConverter implements Converter{
    @Override
    public User convert(String source) {
        System.out.println(source);
        String users [] = source.split("-");
        User user = new User();
        user.setUno(Integer.valueOf(users[0]));
        user.setUsername(users[1]);
        user.setUserpass(users[2]);
        return user;
    }
}

ConversionService时SpringMVC中类型转换器的核心接口,要添加自定义类型转换器,需要实现该接口/利用ConversionServiceFactoryBean在Spring的IOC容器中第一一个ConversionService,并在Bean属性配置对于的类型转换器的实现类,SpringMvc处理方法的形参绑定时就会自动调用该类型转换器。


    
    
        
            
                
            
        
    
    
    

在实际的开发同需要配置:标签

数据格式化

对属性的输入/输出格式化,其本质来讲依然属于类型转换的范畴。Spring在格式化模块中定义一个实现ConversionService接口的FarmattingConversionService实现类,该实现类扩展了GenericConversionService,因此它既具有类型转换的功能有具有格式化的功能。FormattingConversionService拥有一个FormattingConversionServiceFactoryBean工厂类,后者用于构造前者。我们要注册这个

JSR303

jsr303时java为bean数据合法性校验提供的标准框架,它已经包含在JavaEE6.0中,JSR303通过在Bean属性上标注类似@NotNull,@Max等标准的数据指定验证规则,并通过标注的验证接口对Bean进行验证。

@NotEmpty
    @NotNull
    private String name;
    
    @NotNull
    @NotEmpty
    private String age;
    
    @NotNull
    @NotEmpty
    @Email
    private String email;

我们在前台使用SpringMVC提供的Form标签使用Form:errors path 绑定属性即可

@RequestMapping(value="/student",method=RequestMethod.POST)
    public String add(@Valid()Student student,BindingResult result){
        if (!result.hasErrors()) {//判断是否有格式转换错误或者其他校验没通过
            userService.addStudent(student);
            return "redirect:list";
        }else
            return "addPage";
    }

SpringMvc提示消息国际化



    
    

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号