java - 用于@RequestParam 和 Spring Data REST 的 Spring Converter<S, T>

标签 java spring spring-boot spring-data spring-data-rest

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

documentation指出Converter<S, T>实例是自动注册的,但它似乎只适用于 Sping WebMVC。我正在使用 Spring Data REST 的 @RepositoryRestController对于我的 Controller 。

我的用例方法声明如下:

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();
    }
}

我也听从了这个 question 的建议, 但它似乎不适用于 @RepositoryRestController要么。

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

最佳答案

这是在启动时注册自定义类型 Converter 实例的一个解决方案(然后应该应用于 MyFilter 类型的 Controller 方法参数>):

@Configuration
public class WebConfig {

    @Autowired
    private ConverterRegistry converterRegistry;

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

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

关于java - 用于@RequestParam 和 Spring Data REST 的 Spring Converter<S, T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33152493/

相关文章:

spring-boot - 获取命令行参数作为@Scheduled spring boot的spring批作业参数

java - 关于 Java7 的钻石,需要澄清

java - 在 Java 中与 toString 方法作斗争

spring - Grails登录无法正常工作

java - 没有 SpringExtension.class

Spring boot-RabbitMQ消费者继续打印 "Retrieving delivery for Consumer"

java - Spring 异步不起作用

java - 带有特殊字符的速度模板变量名 - 一个点

spring - Spring boot loader 的组和 Artifact ID 是什么?

java - 使用带有 namespace 和模式的 Jaxb 进行 XML 解码