Validate Spring Hateoas Pageable param

Как мне проверить параметр Pageable в Spring Hateoas? Т.е. у меня простой сценарий (с Spring-Data-Elasticsearch):

public class Entity {
    private long timestamp;

    public long getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(long timestamp) {
        this.timestamp = timestamp;
    }
}

    @Autowired
    private EntitiesRepository repository

    @RequestMapping(value = "list", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<PagedResources<Resource<Entity>>> list(Pageable pageable, PagedResourcesAssembler<Entity> assembler){
        Page<Entity> entities = repository.findAll(pageable);
        PagedResources<Resource<Entity>> pagedResources = assembler.toResource(entities);
        return new ResponseEntity<PagedResources<Resource<Entity>>>(pagedResources, HttpStatus.OK);
    }

Все работает нормально, если я передам правильное значение для сортировки параметров, т.е. localhost:8080/app/list?sort=timestamp, но если значение неверно (данное свойство не существует), т.е. localhost:8080/app/list?sort=name Элитное исключение поиска:

org.elasticsearch.action.search.SearchPhaseExecutionException

Итак, мой вопрос: есть ли хорошая практика для добавления валидации параметра Pageable?

1 ответ

Я искал способ проверки экземпляра Pageable или Sort, но похоже, что они не могут быть проверены с помощью @Valid или @Validated, даже с вашим собственным валидатором. Spring просто никогда не вызывает validate() для этих конкретных параметров.

Я предполагаю, что единственный способ выполнить проверку состоит в том, чтобы расширить PageableArgumentResolver или PageableHandlerMethodArgumentResolver, чтобы включить отсутствующую логику проверки.

Другие вопросы по тегам