gpt4 book ai didi

java - 带有 hibernate Validator 的 Spring MVC 来验证单个基本类型

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:48 26 4
gpt4 key购买 nike

下面是我遇到问题的映射方法,无论我传递给它什么值,验证都会返回“通过验证”。

@RequestMapping(value = "test", method = RequestMethod.POST)
@ResponseBody
public String getTest(@RequestBody @Valid @Max(32) long longValue, BindingResult result) {
if (result.hasErrors()) {
return "failed validation";
} else {
return "passed validation";
}
}

我知道 @Max 适用于我的应用程序,因为我用它来验证向 Controller 返回大量数据的自定义对象。它只是在我调用 @Valid 和方法参数中对象的验证类型的这种情况下才不运行验证。

hibernate-validator 不允许这样做吗?

我希望不必定义一个只包含长值的对象,这样我就可以对其进行验证。

最佳答案

I am hoping to not have to define an object that only contains a long value just so that I can run validation on it.

定义包装 bean 恕我直言是最明智的举动,因为 hibernate-validator 完全以 bean 的概念为中心,而且毕竟是 bean 验证规范的引用实现。该规范的主要动机之一是承认验证是跨越不同应用程序层的横切关注点,并提供一种机制来优雅地处理这个问题。这就是为什么它以 bean 为中心的原因,它是通过层传递的对象。

另一方面,以编程方式验证基元毕竟不是什么大问题,您的代码可以简单地类似于

@RequestMapping(value = "test", method = RequestMethod.POST)
@ResponseBody
public String getTest(@RequestBody long longValue, BindingResult result) {
if (longValue > 32) {
result.rejectValue("longValue", "error.longValue", "longValue max constrained failed");
return "failed validation";
} else {
return "passed validation";
}
}

所以在我看来,如果足够简单,要么进行程序验证,要么简单地包装值。

关于java - 带有 hibernate Validator 的 Spring MVC 来验证单个基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24767164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com