gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:47:21 26 4
gpt4 key购买 nike

我在许多 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com