繁体   English   中英

Spring Rest Controller PUT方法请求主体验证?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM