我有一个端点,该端点接受绑定到类GetParams的查询参数:
public class GetParams{
@Min(value = 0, message = "OFFSET_INVALID")
private Integer offset;
@Min(value = 0, message = "LIMIT_INVALID")
private int limit;
public GetParams() {
this.offset = 0;
this.limit = 100;
}
public int getOffset() {
return offset;
}
public int getLimit() {
return limit;
}
public void setOffset(int offset) {
this.offset = offset;
}
public void setLimit(int limit) {
this.limit = limit;
}
}
这是我控制器中的端点:
@GetMapping(value = "/applications")
public ResponseEntity<Data> getApplications( @Validated GetParams parameters) { ... }
当我发送违反其中一个约束的GET请求时,例如:
GET /applications?offset=-20&limit=100
该框架返回400,但是没有我的消息,实际上没有响应正文,也没有在控制台中打印堆栈跟踪!当查询参数有效时,结果也有效。为什么会这样?
谢谢。
答案 0 :(得分:1)
对于GET
请求,您无法像上面一样验证request-params
与对象的绑定。您必须像这样单独验证每个参数:
public ResponseEntity<Data> getApplications(@RequestParam @Min(1) @Max(value=7, message="you custom message") Integer offset, @RequestParam @Min(3) Integer params2, ... )
{
//your code/logic
}
您只能对POST
和其他带有@RequestBody
且其正文中有其他请求的方式进行验证。
答案 1 :(得分:0)
请求参数将使用@RequestParam
进行映射。
尝试
@GetMapping(value = "/applications")
public ResponseEntity<Data> getApplications( @Validated @ReqeustParam @Min(value = 0, message = "OFFSET_INVALID") Integer offset) { ... }`
答案 2 :(得分:0)
在根路径中,您可以将“ resources / application.properties ”中的“包含绑定错误”设置为“始终”。 “消息”也是如此。
server.error.include-message=always
server.error.include-binding-errors=always