![](/img/trans.png)
[英]How to specify order validation in Request body Spring Boot Rest Controller
[英]Spring Rest Controller PUT method request body validation?
这是我控制器中的物品。
@RequestMapping(value = "/accountholders/{cardHolderId}/cards/{cardId}", produces = "application/json; charset=utf-8", consumes = "application/json", method = RequestMethod.PUT)
@ResponseBody
public CardVO putCard(@PathVariable("cardHolderId") final String cardHolderId,
@PathVariable("cardId") final String cardId, @RequestBody final RequestVO requestVO) {
if (!Pattern.matches("\\d+", cardHolderId) || !Pattern.matches("\\d+", cardId)) {
throw new InvalidDataFormatException();
}
final String requestTimeStamp = DateUtil.getUTCDate();
iCardService.updateCardInfo(cardId, requestVO.isActive());
final CardVO jsonObj = iCardService.getCardHolderCardInfo(cardHolderId, cardId, requestTimeStamp);
return jsonObj;
}
这是请求主体bean:-
public class RequestVO {
private boolean active;
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
我遇到的问题是,当我将请求正文发送为{“ acttttt”:true}时,active设置为false,它将cardinfo更新为false。 我发送给活动设备的任何错误的键值都被认为是错误的。 我将如何处理这是他们的一种方式。 Spring会使用404处理所有其他情况。
任何帮助或建议,表示赞赏。
因为原始boolean
值的默认值为false
。 使用其对应的Wrapper Boolean
:
public class RequestVO {
private Boolean active;
// getters and setters
}
如果需要active
值,则还可以添加验证注释,例如NotNull
:
public class RequestVO {
@NotNull
private Boolean active;
// getters and setters
}
然后,将Valid
注释与RequestBody
注释配对使用,以触发自动验证过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.