Comment utiliser correctement PagedResourcesAssembler à partir de Données du Printemps?

Je suis en utilisant le Printemps 4.0.0.LIBÉRATION, le Printemps de Données Communes 1.7.0.M1, Printemps Hateoas 0.8.0.COMMUNIQUÉ de

Ma ressource est un simple POJO:

public class UserResource extends ResourceSupport { ... }

Ma ressource assembleur convertit les objets Utilisateur à UserResource objets:

@Component
public class UserResourceAssembler extends ResourceAssemblerSupport<User, UserResource> { 
    public UserResourceAssembler() {
        super(UserController.class, UserResource.class);
    }

    @Override
    public UserResource toResource(User entity) {
        //map User to UserResource
    }
}

À l'intérieur de mon UserController je veux récupérer Page<User> de mon service, puis le convertir en PagedResources<UserResource> à l'aide de PagedResourcesAssembler, comme montré ici: https://stackoverflow.com/a/16794740/1321564

@RequestMapping(value="", method=RequestMethod.GET)
PagedResources<UserResource> get(@PageableDefault Pageable p, PagedResourcesAssembler assembler) {
    Page<User> u = service.get(p)
    return assembler.toResource(u);
}

Ce n'appelle pas UserResourceAssembler et simplement le contenu de User sont retournés à la place de ma coutume UserResource.

Retourner une seule ressource de travaux:

@Autowired
UserResourceAssembler assembler;

@RequestMapping(value="{id}", method=RequestMethod.GET)
UserResource getById(@PathVariable ObjectId id) throws NotFoundException {
    return assembler.toResource(service.getById(id));
}

La PagedResourcesAssembler en veut argument générique, mais je ne peux pas utiliser T toResource(T), parce que je ne veux pas convertir mes Page<User> à PagedResources<User>, en particulier parce que User est un POJO et aucune Ressource.

La question est donc: Comment ça fonctionne?

EDIT:

Mon WebMvcConfigurationSupport:

@Configuration
@ComponentScan
@EnableHypermediaSupport
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(pageableResolver());
        argumentResolvers.add(sortResolver());
        argumentResolvers.add(pagedResourcesAssemblerArgumentResolver());
    }

    @Bean
    public HateoasPageableHandlerMethodArgumentResolver pageableResolver() {
        return new HateoasPageableHandlerMethodArgumentResolver(sortResolver());
    }

    @Bean
    public HateoasSortHandlerMethodArgumentResolver sortResolver() {
        return new HateoasSortHandlerMethodArgumentResolver();
    }

    @Bean
    public PagedResourcesAssembler<?> pagedResourcesAssembler() {
        return new PagedResourcesAssembler<Object>(pageableResolver(), null);
    }

    @Bean
    public PagedResourcesAssemblerArgumentResolver pagedResourcesAssemblerArgumentResolver() {
        return new PagedResourcesAssemblerArgumentResolver(pageableResolver(), null);
    }

    /* ... */
}

SOLUTION:

@Autowired
UserResourceAssembler assembler;

@RequestMapping(value="", method=RequestMethod.GET)
PagedResources<UserResource> get(@PageableDefault Pageable p, PagedResourcesAssembler pagedAssembler) {
    Page<User> u = service.get(p)
    return pagedAssembler.toResource(u, assembler);
}
InformationsquelleAutor Benjamin M | 2014-01-25