gpt4 book ai didi

java - 验证 Spring Hateoas Pageable 参数

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:25 26 4
gpt4 key购买 nike

我应该如何在 Spring Hateoas 中验证 Pageable 参数? IE。我有一个简单的场景(使用 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 elasticsearch 抛出异常:

org.elasticsearch.action.search.SearchPhaseExecutionException

所以,我的问题是:添加对 Pageable 参数的验证是否有任何好的做法?

最佳答案

我一直在寻找一种方法来验证 Pageable 或 Sort 实例,但看起来这些无法使用 @Valid 或 @Validated 进行验证,即使使用您自己的 validator 也是如此。 Spring 根本不会对这些特定参数调用 validate()。

我想执行验证的唯一方法是扩展 PageableArgumentResolver 或 PageableHandlerMethodArgumentResolver 以包含缺少的验证逻辑。

关于java - 验证 Spring Hateoas Pageable 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36333056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com