`
jinnianshilongnian
  • 浏览: 21499355 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2417769
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3008061
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5638956
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:259806
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597035
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250107
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5858146
Group-logo
跟我学Nginx+Lua开...
浏览量:701782
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:784897
社区版块
存档分类
最新评论

SpringMVC内置的精准数据绑定2

 
阅读更多

之前写过一篇《扩展SpringMVC以支持更精准的数据绑定1》用于完成类似于struts2的数据绑定;有朋友可能觉得自己写个参数解析器扩展比较麻烦,在此再介绍下springmvc内置的支持。

 

代码片段如下: 

    //http://localhost:9080/es-web/binder/test1?user1.id=1&user2.id=2
    @RequestMapping("/test1")
    public String test1(@ModelAttribute("user1") User user1, @ModelAttribute("user2") User user2) {
        System.out.println(user1);
        System.out.println(user2);
        return "";
    }

    @InitBinder("user1")
    public void initBinder1(WebDataBinder binder) {
        binder.setFieldDefaultPrefix("user1.");
    }

    @InitBinder("user2")
    public void initBinder2(WebDataBinder binder) {
        binder.setFieldDefaultPrefix("user2.");
    }

此处使用@InitBinder() 中间的value,用于指定命令/表单属性或请求参数的名字,符合该名字的将使用此处的DataBinder,如我们的@ModelAttribute("user1") User user1 将使用@InitBinder("user1")指定的DataBinder绑定;如果不指定value值,那么所有的都将使用。

  

DataBinder.setFieldDefaultPrefix 意思是设置参数的前缀,如我们的是"user1.",此处不能少了"."

 

这种方式的缺点:

1、不支持Path variable的绑定,如/test1/{user1.id}这种情况的绑定;

2、不支持如集合/数组的绑定;

 

如果需要复杂的绑定可以直接使用《扩展SpringMVC以支持更精准的数据绑定1》介绍的方式。下载最新的可以参考:

FormModelMethodArgumentResolver.java

spring-config.xml

ParentController.java (绑定集合的例子)

 

另外可以通过DataBinder完成如下几件事情:

1、binder.setAllowedFields("id")  : 设置允许的字段,比如我只想设置id,那么可以调用这个方法,那么其他属性会忽略;

2、binder.setDisallowedFields("id") : 设置不允许的自动,比如我不想设置id,那么可以调用此方法,这个属性将不设置;

3、binder.setRequiredFields() : 表示哪些字段是必填的;

4、binder.setValidator() :设置自定义的验证器,如果如JSR-303不适合,可以使用这个。

5、binder.registerCustomEditor : 注册自定义的编辑器;可以参考《第四章 Controller接口控制器详解(6)——跟着开涛学SpringMVC 》

 

 

总体来说,如果进行简单的绑定,又不想引入@FormModel注解,那么使用这种方式是可以解决问题的。

 

在使用springmvc数据绑定时,还有一点需要注意(尤其如增删改 都使用同一个页面):

如果用的是原子类型,如int,但是界面上是:

<input type='text' name='id' value=''> 即值为空

那么会遇到如下异常:

Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'id'; nested exception is java.lang.NumberFormatException: For input string: ""] 

建议:

1、最简单的办法 把int 改成---> Integer 即可   即系统的模型中只使用保证类型,

2、如果是新增 到新增页面时  给status一个默认值,可以考虑给个默认值

3、使用if-else 屏蔽掉

 

其实这个springmvc可以改进下,如果是空,给个默认值,这样也行。不过这总起来说还是使用者的问题。

8
3
分享到:
评论
1 楼 xunux 2015-05-07  
好用,可以将没前缀和带前缀的绑定到一个model

相关推荐

    SpringMVC入门很简单之数据绑定(下)

    在本篇中,我们将深入探讨SpringMVC框架中的数据绑定,这是Java开发中一个至关重要的概念,尤其是在构建Web应用程序时。SpringMVC是Spring框架的一部分,它为开发RESTful服务和传统的表单提交提供了强大的支持。数据...

    SpringMVC数据绑定及数据类型转换

    在SpringMVC中,数据绑定和数据类型转换是两个关键的概念,它们对于构建高效、健壮的Web应用至关重要。 **数据绑定**是SpringMVC中的一种机制,允许我们将用户通过表单或其他方式提交的请求参数自动绑定到控制器中...

    扩展SpringMVC以支持更精准的数据绑定1

    在“扩展SpringMVC以支持更精准的数据绑定1”这个主题中,博主探讨了如何通过自定义转换器和验证器来增强Spring MVC的数据绑定能力,以满足更为复杂的应用场景。 首先,我们要了解Spring MVC的数据绑定基础。在默认...

    Springmvc前后台数据数组绑定

    Springmvc前后台数据数组绑定,list超过了256时,会报错,如何解决?该文给出了说明

    SpringMVC数据绑定入门.rar

    2. **数据绑定原理**: 数据绑定是SpringMVC处理用户输入的一种方式,它将HTTP请求参数与Java对象的属性关联起来。这种关联可以通过注解或配置实现。例如,`@RequestParam`用于从请求中获取参数,而`@...

    SpringMVC配置多数据源实战

    在SpringMVC框架中配置多数据源是一项常见的需求,尤其在大型企业级应用中,由于业务的复杂性,往往需要连接不同的数据库以满足不同模块的需求。以下将详细讲解如何实现这一功能。 首先,理解数据源(DataSource)...

    SpringMVC 数据绑定实例详解

    本篇将深入讲解 SpringMVC 数据绑定的实例详解。 SpringMVC 的数据绑定是通过 `ModelAttribute` 注解和 `@RequestParam` 注解来实现的。`@ModelAttribute` 通常用于控制器方法的参数,它可以从模型(Model)中获取...

    SpringMVC入门很简单之数据绑定(上)

    在本文中,我们将深入探讨SpringMVC框架中的数据绑定,这是Spring MVC开发中不可或缺的一部分,尤其是在处理用户输入和展示响应时。数据绑定是将HTTP请求参数与Java对象的属性关联的过程,极大地简化了Web应用程序的...

    springmvc入门参数绑定ssm整合

    SpringMVC入门参数绑定SSM整合 SpringMVC是一种基于MVC模式的Web应用程序框架,它是Spring框架的一个模块,用于开发Web项目。下面是SpringMVC入门参数绑定SSM整合的知识点总结: 一、SpringMVC概述 SpringMVC是...

    springmvc-demo05-数据绑定(接受参数).zip

    在这个名为"springmvc-demo05-数据绑定(接受参数)"的项目中,我们将深入探讨Spring MVC如何实现这一特性。 1. **数据绑定的基本概念** 数据绑定是将用户输入或者HTTP请求参数自动映射到Java对象的属性上的过程。...

    SSM(Spring+SpringMVC+MyBatis)多数据源配置框架

    2. **动态数据源**:Spring的AbstractRoutingDataSource类允许根据特定条件动态选择数据源。通过设置当前数据源键,可以在运行时决定使用哪个数据源。 3. **事务管理**:在多数据源环境中,事务管理需要特别注意。...

    springMVC取后台数据做Echarts报表

    SpringMVC作为一款强大的Java Web框架,常被用于处理HTTP请求、数据绑定和业务逻辑控制。而Echarts则是一款优秀的JavaScript图表库,能方便地创建各种交互式的数据可视化图表。本文将详细介绍如何使用SpringMVC来...

    Spring+SpringMVC+Mybatis动态链接多数据源

    2. **定义路由逻辑**:创建一个自定义的路由类,实现DeterminingDataSource,该类会根据业务逻辑判断应该使用哪个数据源。 3. **事务管理**:在Spring中,需要配置事务管理器,让它能够识别并管理不同数据源的事务...

    SpringMVC绑定数据库例子

    SpringMVC是Spring框架的一部分,它提供了处理HTTP请求、视图解析以及模型数据绑定等功能,而MyBatis则是一个轻量级的持久层框架,它简化了SQL操作,使开发者可以直接编写SQL语句并与Java对象进行映射。 1. **...

    SpringMVC+Oracle数据源demo项目完整代码

    SpringMVC和Oracle数据源是企业级Web应用开发中常见的技术组合。SpringMVC作为Spring框架的一部分,主要用于处理HTTP请求和响应,而Oracle数据库则是一个功能强大的关系型数据库管理系统,常用于存储和管理大量结构...

    springmvc操作json数据所需的jar包

    在描述中提到的文件"springmvc-json"可能包含了Spring MVC与JSON交互所需的一些依赖,如Jackson库的jar文件。Jackson库由多个组件组成,主要包括: 1. **Jackson-core**: 这是Jackson库的基础模块,提供了基本的...

    SpringMVC数据类型转换超详细介绍

    SpringMVC自Spring 3版本开始,对数据绑定机制进行了大幅度改进,提供了更为强大和灵活的数据转换与验证功能。本文将详细介绍SpringMVC中数据类型转换的具体实现方式及其背后的工作原理。 #### 二、Spring 3之前的...

    搭建SpringMVC(数据访问 Springdata)

    2. **配置SpringMVC**:创建spring-mvc.xml配置文件,配置DispatcherServlet、视图解析器、模型-视图-适配器(MVC的各个组件)等。使用注解驱动的配置可以简化配置过程。 3. **配置SpringData**:在Spring配置文件...

    SpringMVC实现数据绑定及表单标签

    SpringMVC实现数据绑定及表单标签 SpringMVC是一款基于Java的Web应用框架,它提供了很多有用的功能,包括数据绑定和表单标签。数据绑定是将用户输入绑定到领域模型的一种特性,可以自动进行格式转换,减少开发者的...

Global site tag (gtag.js) - Google Analytics