博客
关于我
【SpringMVC】数据转换 & 数据格式化 & 数据校验
阅读量:408 次
发布时间:2019-03-06

本文共 1597 字,大约阅读时间需要 5 分钟。

数据转换与格式化是Spring MVC开发中核心组件之一,直接关系到应用程序的数据处理能力。本节将详细介绍Spring MVC中的数据转换机制、数据格式化支持以及数据校验流程。

数据转换

Spring MVC的数据转换能力得益于其强大的ConversionService框架,该框架能够自动识别并使用适用于特定类型转换的转换器。ConversionService的核心在于其转换器的动态加载与管理,开发者可以通过自定义转换器扩展其功能。

自定义类型转换器

为了满足特定业务需求,开发者可以编写自定义转换器并注册到ConversionService中。ConversionServiceFactoryBean提供了一个简便的方式来配置自定义转换器,Spring会自动识别并使用这些转换器。在实际应用中,开发者需要实现Converter、ConverterFactory或GenericConverter接口之一,并将其注册为ConversionService的bean。

数据格式化

数据格式化是数据转换的延伸,主要用于对属性值进行更细粒度的格式化处理。Spring提供了两种主要的格式化支持:

  • 基于注解的格式化:通过@NumberFormat和@DateTimeFormat注解,开发者可以对特定属性指定数值或日期格式化格式。

  • 自定义格式化转换器:对于复杂的格式化需求,可以编写自定义的格式化转换器并注册到ConversionService中。Spring还提供了FormattingConversionServiceFactroyBean来简化这一过程。

  • 数据校验

    数据校验是确保数据合法性和完整性的重要环节,Spring MVC通过集成JSR 303(Java Bean Validation)框架提供了强大的数据校验能力。

    JSR 303校验

    JSR 303定义了一系列标准的校验注解,开发者可以在Bean属性上标注这些注解,例如@NotNull、@Max等。Spring MVC会自动检测这些注解并调用相应的校验器,确保数据符合预定义的规则。

    校验结果获取

    在处理方法中,校验结果可以通过BindingResult或Errors对象获取。BindingResult提供了获取校验结果的多种方法,如getErrorCount()、getFieldErrors()等。这些方法使开发者能够在处理方法中直接访问校验结果,做出相应的业务逻辑处理。

    国际化提示消息

    Spring MVC支持国际化提示消息,通过注册ResourceBundleMessageSource bean,开发者可以配置国际化消息资源文件。错误消息会根据请求语言环境自动切换,确保用户体验的统一性和本地化支持。

    示例

    以下是一个简单的数据校验示例:

    @RequestMapping("/validate")public String validate(@Valid @ModelAttribute("user") User user, BindingResult bindingResult) {    if (bindingResult.hasErrors()) {        return "错误验证";    }    System.out.println(user);    return "验证通过";}

    此外,用户界面可以通过Spring MVC的表单标签(如<%form:errors%>)显示校验错误信息,确保用户能够了解数据输入问题。

    总结

    Spring MVC提供了强大的数据转换、格式化和校验功能,这些功能通过ConversionService和JSR 303框架实现,极大地简化了数据处理流程。通过合理配置转换器、使用注解驱动的格式化和校验功能,开发者能够构建高效且可靠的Spring应用程序。

    转载地址:http://gjtkz.baihongyu.com/

    你可能感兴趣的文章
    org.tinygroup.serviceprocessor-服务处理器
    查看>>
    org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
    查看>>
    org/hibernate/validator/internal/engine
    查看>>
    Orleans框架------基于Actor模型生成分布式Id
    查看>>
    SQL-36 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。
    查看>>
    ORM sqlachemy学习
    查看>>
    Ormlite数据库
    查看>>
    orm总结
    查看>>
    os.environ 没有设置环境变量
    查看>>
    os.path.join、dirname、splitext、split、makedirs、getcwd、listdir、sep等的用法
    查看>>
    os.removexattr 的 Python 文档——‘*‘(星号)参数是什么意思?
    查看>>
    os.system 在 Python 中不起作用
    查看>>
    OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
    查看>>
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>
    OSChina 周日乱弹 —— 2014 年各种奇葩评论集合
    查看>>
    OSChina 技术周刊第十期,每周技术抢先看!
    查看>>