2015-10-15 2 views
0

J'utilise Spring Boot 1.2.6 et la dernière version de Spring Data REST.Spring Converter <S, T> pour @RequestParam et Spring Data REST

Le documentation indique que les instances Converter<S, T> sont enregistrées automatiquement, mais il semble fonctionner uniquement avec Sping WebMVC. J'utilise le @RepositoryRestController de Spring Data REST pour mon contrôleur.

Mon cas d'utilisation déclaration de méthode est la suivante:

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 
} 

Le convertisseur (mannequin de encore):

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

J'ai aussi suivi les conseils de cette question, mais il n'a pas semblent fonctionner pour @RepositoryRestController soit.

Comment puis-je ajouter un convertisseur personnalisé aux contrôleurs personnalisés Spring Data REST? (Ne pas utiliser le passage manuel d'une référence à un variateur au contrôleur).

Répondre

1

est ici une solution pour enregistrer votre type personnalisé Converter instance (s) au démarrage (devrait alors être appliqué au contrôleur méthode params de type MyFilter):

@Configuration 
public class WebConfig { 

    @Autowired 
    private ConverterRegistry converterRegistry; 

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

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