首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LocalDate验证问题

LocalDate验证问题
EN

Stack Overflow用户
提问于 2021-10-28 16:00:35
回答 2查看 149关注 0票数 0

我已经在这个问题上卡住了一段时间。我正在使用LocalDate通过REST端点接受来自用户的日期输入。我想验证这个日期,以检查它是nullempty字符串还是invalid日期,例如Feb 30。我已经设法让它在有效的日期值下工作,但是在无效输入的情况下,它抛出了400 Bad Request作为响应,它来自Java的内部类,所以我对它没有任何控制。如果你能让我知道,如果我遗漏了什么或做错了什么,我将非常感谢。

这在我的控制器中被称为方法-用@Valid注解:

代码语言:javascript
复制
@RequestMapping(method = RequestMethod.PUT, value="/add")
public ResponseEntity<PSResponse> add(@Valid @RequestBody PSRequest request) throws Exception {
    setServiceID(SERVICE_HANDLER_ID);
    request.setRequestType("add");
    PSResponse response = (PSResponse) invokeInternal(request);
}

这是我的请求对象的类

代码语言:javascript
复制
public class PSRequest {
@NotNull(message = "fromDate cannot be null")
protected LocalDate fromDate;

@NotNull(message = "toDate cannot be null")
protected LocalDate toDate;}

有效的JSON输入

代码语言:javascript
复制
"fromDate":2020-10-16"
"toDate":"2021-10-16"

无效的JSON输入日期格式

代码语言:javascript
复制
"fromDate":null,
"toDate":"2021-02-30"

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-10-28 16:26:16

你所做的一切都没有错,得到一个400 bad request是很正常的。为什么?因为您使用的是基于Http协议的Rest端点

Bad request表示您的Http请求不正确,原因有很多,例如:无效参数。最佳实践是向用户发送一条明确的消息,解释在他发送到服务器的请求之后发生了什么。为此,您可以使用RestControllerAdvice截获所有异常并将其映射到Http状态代码。

有关更多详细信息,请查看this post

票数 1
EN

Stack Overflow用户

发布于 2021-10-28 16:18:28

为了抑制内置验证,您可以从前端接收String,然后才执行您的代码:LocalDate.parse(fromDate),捕获DateTimeParseException并按您希望的方式处理它。

另一种选择是删除@Valid

顺便问一下,@Valid出了什么问题?你就不想要400块钱吗?!或者你想用400控制正文信息?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69757383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档