繁体   English   中英

弹簧转换器 <S, T> 用于@RequestParam和Spring Data REST

[英]Spring Converter<S, T> for @RequestParam and Spring Data REST

我正在使用Spring Boot 1.2.6和Spring Data REST最新版本。

文档说明Converter<S, T>实例是自动注册的,但它似乎只适用于Sping WebMVC。 我正在为我的控制器使用Spring Data REST的@RepositoryRestController

我的用例方法声明如下:

public PagedResources<Resource<Equipment>> filterEquipments(
    @RequestParam("page") Integer page,
    @RequestParam("sort") String sort,
    @RequestParam("filter") MyFilter filter, // I want to register custom converter for this type
    PersistentEntityResourceAssembler resourceAssembler) {
    // method body
}

转换器(它的假人):

@Component
public class MyFilterConverter implements Converter<String, MyFilter> {
    @Override
    public MyFilter convert(String source) {
        return new MyFilter();
    }
}

我也遵循了这个问题的建议,但它似乎也不适用于@RepositoryRestController

如何将自定义转换器添加到Spring Data REST自定义控制器? (不使用手动将转换器的引用传递给Controller)。

这是在启动时注册自定义类型Converter实例的一种解决方案(应该应用于MyFilter类型的控制器方法参数):

@Configuration
public class WebConfig {

    @Autowired
    private ConverterRegistry converterRegistry;

    @PostConstruct
    public void init() {
        registerConverters();
    }

    private void registerConverters() {
        converterRegistry.addConverter(new MyFilterConverter());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM