spring - 如何在 Spring-MVC 中注册全局自定义编辑器?

标签 spring data-binding spring-mvc

我在许多 Spring-MVC Controller 中使用以下自定义编辑器,根据:

Controller

binder.registerCustomEditor(BigDecimal.class, new CustomNumberEditor(BigDecimal.class, NumberFormat.getNumberInstance(new Locale("pt", "BR"), true));

其他 Controller

binder.registerCustomEditor(BigDecimal.class, new CustomNumberEditor(BigDecimal.class, NumberFormat.getNumberInstance(new Locale("pt", "BR"), true));

另一个 Controller

binder.registerCustomEditor(BigDecimal.class, new CustomNumberEditor(BigDecimal.class, NumberFormat.getNumberInstance(new Locale("pt", "BR"), true));

注意注册的自定义编辑器

问题:如何设置像这样的全局自定义编辑器以避免设置每个 Controller ?

问候,

最佳答案

从 Spring 3.2 开始,您可以使用 @ControllerAdvice而不是在每个 Controller 中使用 @ExceptionHandler、@InitBinder 和 @ModelAttribute。它们将应用于所有 @Controller bean。

import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.context.request.WebRequest;

@ControllerAdvice
public class GlobalBindingInitializer {
  @InitBinder
  public void registerCustomEditors(WebDataBinder binder, WebRequest request) {
    binder.registerCustomEditor(BigDecimal.class, new  CustomNumberEditor(BigDecimal.class, NumberFormat.getNumberInstance(new Locale("pt", "BR"), true));
  }
}

如果你开始使用 Spring Roo 生成的代码,或者使用 include-filter 限制组件扫描扫描的注解,那么在 webmvc-config.xml 中添加所需的过滤器

<!-- The controllers are autodetected POJOs labeled with the @Controller annotation. -->
<context:component-scan base-package="com.sensei.encore.maininterface" use-default-filters="false">
  <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
  <!-- ADD THE BELOW LINE -->
  <context:include-filter expression="org.springframework.web.bind.annotation.ControllerAdvice" type="annotation"/>
</context:component-scan>

关于spring - 如何在 Spring-MVC 中注册全局自定义编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1268021/

相关文章:

Spring 尝试 Autowiring Mockito 模拟

java - 使用 Spring 实现基于 token 的授权的最佳方法是什么?

c# - Xamarin.Mac MVVM 模式的最佳实践

c# - 仅在依赖属性更改值后引发事件

spring - 访问被拒绝(用户是匿名的);重定向到 Spring 中的身份验证入口点

spring - KISS 和设计模式

java - 将 Spring Cache 与 Hazelcast 近缓存结合使用

spring-mvc - Spring MVC 是否需要将 Entity 复制/粘贴到 FormObject?

java - Spring Boot使用服务器响应中的数据编辑json异常

java - spring-mvc 中 swagger-ui (io.swagger) 的描述中出现了垃圾值 --> ��� ,如何删除它?