`
youyu4
  • 浏览: 440311 次
社区版块
存档分类
最新评论

Spring MVC 之数据转换

阅读更多

Spring MVC 之数据转换

 

在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定。

 

解决方法:@InitBinder

 

在我的项目中是在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器,当然你如果不嫌麻烦,你也可以单独的写在你的每一个controller中。剩下的控制器都继承该类。spring自己提供了大量的实现类,诸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等许多,基本上够用。

 

当然,也可以自己去构造新的Editer

import org.springframework.beans.propertyeditors.PropertiesEditor;  
  
public class DoubleEditor extends PropertiesEditor {    
    @Override    
    public void setAsText(String text) throws IllegalArgumentException {    
        if (text == null || text.equals("")) {    
            text = "0";    
        }    
        setValue(Double.parseDouble(text));    
    }    
    
    @Override    
    public String getAsText() {    
        return getValue().toString();    
    }    
}   

 

import org.springframework.beans.propertyeditors.PropertiesEditor;  
  
public class IntegerEditor extends PropertiesEditor {    
    @Override    
    public void setAsText(String text) throws IllegalArgumentException {    
        if (text == null || text.equals("")) {    
            text = "0";    
        }    
        setValue(Integer.parseInt(text));    
    }    
    
    @Override    
    public String getAsText() {    
        return getValue().toString();    
    }    
}   

 

import org.springframework.beans.propertyeditors.PropertiesEditor;  
  
public class FloatEditor extends PropertiesEditor {    
    @Override    
    public void setAsText(String text) throws IllegalArgumentException {    
        if (text == null || text.equals("")) {    
            text = "0";    
        }    
        setValue(Float.parseFloat(text));    
    }    
    
    @Override    
    public String getAsText() {    
        return getValue().toString();    
    }    
}    

 

import org.springframework.beans.propertyeditors.PropertiesEditor;  
  
public class LongEditor extends PropertiesEditor {    
    @Override    
    public void setAsText(String text) throws IllegalArgumentException {    
        if (text == null || text.equals("")) {    
            text = "0";    
        }    
        setValue(Long.parseLong(text));    
    }    
    
    @Override    
    public String getAsText() {    
        return getValue().toString();    
    }    
}    

 

 

一般会建一个BaseController作为父类,然后所有Controller都继承它,要注册的编辑器都写在这。

@InitBinder    
   protected void initBinder(WebDataBinder binder) {    
       binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));    
/        binder.registerCustomEditor(int.class, new CustomNumberEditor(int.class, true));    
       binder.registerCustomEditor(int.class, new IntegerEditor());    
/        binder.registerCustomEditor(long.class, new CustomNumberEditor(long.class, true));  
       binder.registerCustomEditor(long.class, new LongEditor());    
       binder.registerCustomEditor(double.class, new DoubleEditor());    
       binder.registerCustomEditor(float.class, new FloatEditor());    
   }   

 

如果你的编辑器类直接继承PropertyEditorSupport也可以。

public class org.springframework.beans.propertyeditors.PropertiesEditor extends java.beans.PropertyEditorSupport {  

 

 

分享到:
评论

相关推荐

    spring MVC数据绑定大全

    如果Spring MVC的默认行为不能满足需求,可以通过实现`org.springframework.web.bind.WebDataBinder`的初始化方法`initBinder()`来自定义数据绑定的行为,例如设置特定属性的约束或自定义转换器。 ```java @...

    Spring MVC 数据转换和格式化.docx

    在Spring MVC框架中,数据转换和格式化是一个关键部分,它允许我们处理各种类型的输入和输出数据,确保数据能够在客户端和服务器之间正确地传递。HttpMessageConverter是Spring MVC中的核心组件,负责处理HTTP请求和...

    Mastering Spring MVC 4(2015.09)源码

    总的来说,"Mastering Spring MVC 4(2015.09)源码"提供了深入学习Spring MVC的机会,你可以通过阅读和分析源码来了解如何配置DispatcherServlet、怎样编写控制器、如何进行数据绑定与验证,以及如何利用拦截器等特性...

    spring MVC .docx

    10. **Conversion and Validation**: Spring MVC提供了数据转换和验证功能,如使用`@RequestParam`、`@PathVariable`注解自动转换参数,以及使用`@Valid`和`BindingResult`进行表单验证。 11. **Tiles or Layouts**...

    Spring MVC使用Demo

    首先,Spring MVC的设计模式基于Model-View-Controller(MVC),它将应用程序的业务逻辑、数据和用户界面进行了分离,使得代码更加清晰、易于维护。在Spring MVC中,Controller处理用户的请求,Model存储数据,而...

    spring mvc jar包

    以上这些库构成了 Spring MVC 开发的基础环境,开发者可以利用它们来创建控制器、定义模型、配置视图解析器,以及实现事务管理、数据访问等复杂功能。通过 Spring MVC,开发者能够以声明式的方式组织应用程序,提高...

    Spring MVC 基础实例源码01

    10. **ConversionService**:转换服务,处理类型转换,比如将请求参数从字符串转换为其他数据类型。 11. **Validation**:Spring提供了数据验证机制,可以通过`@Valid`注解和Validator接口实现对表单数据的校验。 ...

    29 Spring MVC之类型转换Converter慕课专栏1

    `Converter`接口允许我们从一个`Object`转换到另一个`Object`,不再局限于`String`类型,这为更复杂的数据转换提供了可能。除了`Converter`,Spring还提供了`ConverterFactory`和`GenericConverter`接口,它们提供了...

    spring mvc 整合包

    15. **AJAX集成**:Spring MVC与jQuery、AngularJS等前端库配合,可以实现异步数据交互。 这个"spring mvc 整合包"可能包含了Spring MVC的jar文件、配置示例、启动脚本或者示例代码,帮助开发者快速启动基于Spring ...

    Spring mvc5.0.3 所有jar包

    8. **数据验证**: 通过集成JSR-303/JSR-349(Bean Validation)规范,Spring MVC提供了一种方便的数据验证机制。可以使用`@Valid`注解进行验证,并通过`BindingResult`对象获取验证结果。 9. **拦截器(Interceptor...

    spring mvc restful service

    `@RequestBody`用于将请求体中的JSON数据转换为Java对象,而`@ResponseBody`则将方法的返回值转换为JSON发送回客户端。 - **XML**:对于XML,Spring MVC同样支持使用JAXB进行序列化和反序列化。可以使用`@...

    spring MVC_快速入门

    Spring MVC支持自动的数据绑定,可以将请求参数直接绑定到Controller方法的参数上,也可以将表单数据绑定到Java对象。此外,@Valid用于验证模型数据,配合Validator接口实现自定义校验规则。 7. **异常处理** ...

    Spring mvc 教程

    ### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...

    Spring MVC 切换数据源

    - 在Spring MVC中,我们可以使用Jackson或Gson库将数据转换成JSON格式,便于前端展示或API调用。 - 创建一个`@Controller`,使用`@ResponseBody`注解的方法来返回JSON对象。这些对象可以从数据源查询得到,然后...

    《精通Spring MVC 4》源码

    首先,Spring MVC的核心组件包括DispatcherServlet、Controller、Model-View-Controller(MVC)架构、视图解析器和数据绑定等。DispatcherServlet作为Spring MVC的前端控制器,负责接收HTTP请求,然后根据配置分发到...

    spring mvc

    6. **ModelAndView**: 它是Spring MVC中用于携带模型数据和视图名的对象,可以在控制器方法中返回,以便于传递数据和指定视图。 7. **Form Handling**: Spring MVC 提供了强大的表单处理能力,包括自动数据绑定、...

    spring MVC 对 ResponseBody返回json数据进行脱敏处理

    在Spring MVC框架中,开发Web应用时经常需要将对象转换为JSON格式的数据并返回给客户端。然而,在处理敏感数据时,我们可能希望对这些数据进行脱敏,即隐藏或替换某些字段,以保护用户隐私或者确保数据安全性。本文...

Global site tag (gtag.js) - Google Analytics