`
digfog
  • 浏览: 43035 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[转]Spring MVC type conversion : PropertyEditor or Converter?

 
阅读更多
http://stackoverflow.com/questions/12544479/spring-mvc-type-conversion-propertyeditor-or-converter
PropertyEditor Converter是spring 使用的两种对象转换方式
public class CategoryEditor extends PropertyEditorSupport {

    // Converts a String to a Category (when submitting form)
    @Override
    public void setAsText(String text) {
        Category c = new Category(text);
        this.setValue(c);
    }

    // Converts a Category to a String (when displaying form)
    @Override
    public String getAsText() {
        Category c = (Category) this.getValue();
        return c.getName();
    }

}

@InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Category.class, new CategoryEditor());
        binder.setConversionService(conversionService);//conversionService也可以在这注册
    }

统一配置时,实现 WebBindingInitializer 接口:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="cacheSeconds" value="0" />
    <property name="webBindingInitializer">
        <bean class="org.springframework.samples.petclinic.web.ClinicBindingInitializer" />
    </property>
</bean>


converter方式
public class StringToCategory implements Converter<String, Category> {

    @Override
    public Category convert(String source) {
        Category c = new Category(source);
        return c;
    }

}

public class CategoryToString implements Converter<Category, String> {

    @Override
    public String convert(Category source) {
        return source.getName();
    }

}

[xml]
<bean id="conversionService"
  class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="somepackage.StringToCategory"/>
            <bean class="somepackage.CategoryToString"/>
        </list>
    </property>
</bean>

ctx.getBea("conversionService")取到对象,ctx.getBea("&conversionService")取到factorybean.

[java]
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    protected void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new StringToCategory());
        registry.addConverter(new CategoryToString());
    }

}


实现ConditionalGenericConverter 接口可以处理很多相似转换,类亿DomainClassConverter
分享到:
评论

相关推荐

    spring MVC .docx

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

    spring mvc框架源码

    8. **Conversion and Validation**: Spring MVC提供了一套完整的数据绑定、类型转换和验证机制。比如,@RequestParam、@PathVariable等注解用于从请求参数中获取数据,@Valid用于数据验证。 9. **Tiles, FreeMarker...

    spring mvc入门小例子

    Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。它作为Spring框架的一部分,提供了模型-视图-控制器(MVC)架构模式的实现,帮助开发者将业务逻辑、数据处理和用户界面分离,使得...

    spring mvc3.1.0 日期自动转换

    Spring MVC 3.1.0通过提供数据绑定(Data Binding)和类型转换(Type Conversion)机制,简化了这个过程。 1. 数据绑定:Spring MVC的数据绑定允许我们直接将HTTP请求参数映射到控制器方法的参数上。例如,一个`@...

    深入解析Spring MVC与Web Flow

    Spring MVC和Web Flow是两种广泛应用于Java Web开发的技术。Spring MVC是Spring框架的一部分,主要用于构建高效、可维护的Web应用程序,而Web Flow则是一个用于管理用户交互流程的强大工具,尤其适用于处理复杂的...

    第十五章 Spring 类型转换(Type Conversion)1

    总结来说,Spring 的类型转换机制是一个强大而灵活的系统,它涵盖了从传统的 `PropertyEditor` 到现代的 `Converter` 和 `GenericConverter` 接口。理解并掌握这一机制,可以帮助开发者更好地处理应用程序中的类型...

    spring mvc 架构源代码

    Spring MVC 是一款基于Java的轻量级Web应用框架,它为构建MVC(Model-View-Controller)模式的Web应用程序提供了强大的支持。本资源“spring mvc 架构源代码”是一个完整的、可运行的Spring MVC项目,适用于初学者和...

    Spring MVC3复杂表单终极解决办法

    在Spring MVC中,这种复杂性可以通过模型绑定(Model Binding)和数据转换(Data Conversion)机制来简化处理。 1. **模型绑定**: Spring MVC支持基于注解的模型绑定,允许开发者通过`@ModelAttribute`注解将HTTP...

    如果面试问你Spring MVC的原理

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(Model-View-Controller,MVC)结构的Web应用程序提供了一种强大的解决方案。面试中,Spring MVC的原理通常涉及以下几个核心概念: 1. **...

    AD507Complete A/D Converter with Reference and Clock Fast Successive Approximation Conversion: 25 ms No Missing Codes Over Temperature

    Complete A/D Converter with Reference and Clock Fast Successive Approximation Conversion: 25 ms No Missing Codes Over Temperature

    spring mvc框架

    9. **Conversion and Validation**:Spring MVC提供了自动类型转换和数据验证的功能,如使用`@DateTimeFormat`进行日期格式化,`@Valid`进行数据校验。 10. **AOP(面向切面编程)**:Spring MVC可以与Spring的AOP...

    spring mvc

    9. **Conversion and Formatting**:Spring MVC有内置的转换服务,可以自动将不同类型的值转换为期望的类型,如日期、数字等。 Spring MVC与Mybatis的结合使用则进一步增强了应用程序的功能。Mybatis是一个轻量级的...

    spring-mvc

    8. **Conversion and Formatting**:Spring MVC提供了数据转换和格式化服务,自动将请求参数转换为Java对象,或将Java对象转换为字符串。 9. **ExceptionHandler**:通过`@ExceptionHandler`注解,开发者可以定义...

    spring5.zip

    7. **类型安全的转换服务(Conversion Service)**:Spring 5提供了类型安全的转换服务,能够自动处理类型之间的转换,避免了常见的类型转换错误。 8. **Java 8及更高版本的支持**:Spring 5全面支持Java 8和更高...

    sprimg-mvc 基础入门

    Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。它基于Spring框架,提供了模型-视图-控制器(MVC)架构,简化了开发流程,实现了业务逻辑与视图的分离,提高了代码的可测试性和可...

    Spring源码学习六:bean初始化1

    在Spring框架中,Bean的初始化是其生命周期中的关键步骤,特别是在单例模式下,Spring容器会确保在应用程序启动时创建并初始化所有非延迟加载的单例Bean。在本篇文章中,我们将深入探讨Spring源码中关于Bean初始化的...

    spring-mvc:springmvc源码学习-mvc source code

    Spring MVC 是一个强大的Java Web开发框架,由Spring社区开发并维护。它提供了模型-视图-控制器(MVC)架构模式,使得开发者可以方便地构建高效、可测试且灵活的Web应用程序。在这个“spring-mvc:springmvc源码学习...

    Michael-Cook-Spring_Conversion:具有端点的基本Java应用程序进行转换

    Michael-Cook-Spring_Conversion 具有端点的基本Java应用程序进行转换以以下格式{值:double单位:字符串}接受端点的所有输入数据的JSON,所有数据均以相同的JSON格式返回运行part1 ./mvnw spring-boot:run 由于...

    image-conversion:一个简单易用的JS图像转换工具,可以指定大小以压缩图像

    `image-conversion`是一个专门针对JavaScript环境的图像转换工具,它提供了便捷的接口,允许开发者根据需求调整图像尺寸并进行压缩,以适应各种应用场景。本文将深入探讨`image-conversion`的使用方法、核心功能以及...

Global site tag (gtag.js) - Google Analytics