用于@RequestParam和Spring Data REST的Spring Converter <s,t =“”>

时间:2015-10-15 15:25:38

标签: 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作为我的控制器。

我的用例方法声明如下:

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)。

1 个答案:

答案 0 :(得分:3)

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

@Configuration
public class WebConfig {

    @Autowired
    private ConverterRegistry converterRegistry;

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

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