Java 纯HTML表单的Spring表单验证
我需要在我的应用程序中验证一些简单的表单。在这些表单中,我需要验证一个或两个输入文本,因此我不希望为每个表单创建特定的ModelAttribute类。我希望使用普通HTML表单,并使用Java 纯HTML表单的Spring表单验证,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,我需要在我的应用程序中验证一些简单的表单。在这些表单中,我需要验证一个或两个输入文本,因此我不希望为每个表单创建特定的ModelAttribute类。我希望使用普通HTML表单,并使用@RequestParam注释来处理POST参数 在这种情况下,有没有办法使用Spring表单验证(不使用model属性),或者我应该为每个表单实现一个backing表单对象和一个验证器?我认为您可以通过注释来实现这一点。您可以指定参数注释,如: @尺寸(最小值=3,最大值=5) @NotNull @空空如也
@RequestParam
注释来处理POST参数
在这种情况下,有没有办法使用Spring表单验证(不使用model属性),或者我应该为每个表单实现一个backing表单对象和一个验证器?我认为您可以通过注释来实现这一点。您可以指定参数注释,如:
- @尺寸(最小值=3,最大值=5)
- @NotNull
- @空空如也
…使用Spring的验证API(错误对象)绝对不可能:
没有模型属性,Spring表单验证是不可能的。因为Spring表单验证依赖于Spring表单绑定,它是表单元素和模型属性之间的链接。因此,表单可能有多小,创建一个DTO(模型属性),将其绑定到表单并执行验证。目前,无法对单个
@RequestParam
,@PathVariable
等使用@Valid
来触发验证。是Spring问题跟踪器上的相关功能请求。让我们为春天4.1祈祷吧
在您的情况下,您必须使用
@modeldattribute
,或者在控制器内部执行自定义验证(或者如果您希望将相同的验证应用于多个端点,可以使用Spring拦截器)您可以实例化一个模型对象,用普通表单中的数据填充它,并以编程方式验证该对象。是否可以使用Map
作为modeldattribute
?您可以使用Map
强制Spring MVC为您提供所有参数,但我严重怀疑验证是否会在其上运行
java.lang.IllegalStateException: An Errors/BindingResult argument is expected to be declared immediately after the model attribute, the @RequestBody or the @RequestPart arguments to which they apply