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 它用 false 更新 cardinfo。无论我发送给活动的错误键值都被认为是错误的。我将如何处理这是他们的一种方式。所有其他情况都由 spring 和 404 处理。

如有任何帮助或建议,我们将不胜感激。

因为原语 boolean 的默认值是 false。使用其相应的包装器 Boolean,而不是:

public class RequestVO {

    private Boolean active;

    // getters and setters
}

如果需要 active 值,您还可以添加验证注释,例如 NotNull:

public class RequestVO {

    @NotNull
    private Boolean active;

    // getters and setters
}

然后使用 Valid 注释与 RequestBody 注释配对触发自动验证过程。