SpringWeb MVC-验证个人请求参数

问题描述 投票:0回答:3
我想添加一些验证 - 例如,

description

应仅限于一定长度,或者仅应包含某些字符。如果此验证失败,我想向用户返回一条消息,而不仅仅是提出一些未选中的异常(如果我让数据渗透到DAO层,这将会发生)。我知道
JSR303
,但没有使用它,也不完全了解如何在春季环境中应用它。

从我了解的内容中,另一个选项是将

fooname
绑定到整个域对象并在那里添加验证约束,但是当前我的代码已设置为接受单个参数,如上所示。
使用此方法将验证应用于输入参数的最直接方法是什么?
    
现在似乎是可能的(尝试了弹簧4.1.2),请参见

Https://raymondhlee.wordpress.com/2015/08/08/29/validating-spring-spring-mvc-request-mvc-request-mapping-mathod-method-parameters/

从上一页提取:

java spring validation spring-mvc
3个回答
40
投票

@RequestBody aadd @valided to Controllerclass

    使用@Size在 @requestParam
  1. 之前

    @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor(); }

    }
  2. @ExceptionHandler方法中的Handle CondraintVioLationException

  3. 无论如何,没有什么可以做到的。  使用当前版本版本,如果您需要自动验证,您仍然需要使用WebDatabinder将参数绑定到对象上。  如果您使用SpringMVC,即使不是您的首选此任务,也值得学习。
    
    它看起来像这样:

    @RequestMapping("/hi") public String sayHi(@Size(max = 10, message = "name should at most 10 characters long") @RequestParam("name") String name) { return "Hi " + name;

  4. 如果您在类路径上有Hibernate验证器4或更高版本,并且使用默认调度程序设置,则应该“工作”。 自评论越来越大,所以编辑很大:
  5. 在您的方法签名中的任何对象都不是“预期”的弹簧之一,例如注入诸如

    public ModelAndView createFoo(@PathVariable long level1, @PathVariable long level2, @Valid @ModelAttribute() FooWrapper fooWrapper, BindingResult errors) { if (errors.hasErrors() { //handle errors, can just return if using Spring form:error tags. } } public static class FooWrapper { @NotNull @Size(max=32) private String fooName; private String description; //getset }
HttpRequest

30
投票
ModelMap

有个人风格的事情,在这种情况下,它没有做任何事情。 JSR-303与@Valid在方法参数线上通过@ModelAttribute中的集成。 如果使用WebDataBinder,则根据内容类型使用spring spring为请求主体(通常仅来自HTTP标头)使用对象编组器。调度器servlet(确实)真的没有办法为任何任意的Marshaller“翻转验证开关”。 它只是将Web请求内容传递到消息转换器并恢复对象。 没有生成绑定的对象,因此无处可设置错误。 您仍然只能将验证器注入控制器并将其运行在您获得的对象上,它只是在请求参数上没有魔术集成为您。

如果您有多个需要验证的请求参数(使用http
get

post

)。您还可以创建一个

custom模型class

,并与 @

Modelattribute
一起使用 @
valid
来验证参数。这样,您可以使用
 -Hibernate验证器或
javax.validatorapi
来验证参数。它是这样的:
Request方法:


@RequestBody

ModelRequestclass

AnnotationMethodHandlerAdapter

希望有帮助

18
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.