Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 纯HTML表单的Spring表单验证_Java_Spring_Validation_Spring Mvc - Fatal编程技术网

Java 纯HTML表单的Spring表单验证

Java 纯HTML表单的Spring表单验证,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,我需要在我的应用程序中验证一些简单的表单。在这些表单中,我需要验证一个或两个输入文本,因此我不希望为每个表单创建特定的ModelAttribute类。我希望使用普通HTML表单,并使用@RequestParam注释来处理POST参数 在这种情况下,有没有办法使用Spring表单验证(不使用model属性),或者我应该为每个表单实现一个backing表单对象和一个验证器?我认为您可以通过注释来实现这一点。您可以指定参数注释,如: @尺寸(最小值=3,最大值=5) @NotNull @空空如也

我需要在我的应用程序中验证一些简单的表单。在这些表单中,我需要验证一个或两个输入文本,因此我不希望为每个表单创建特定的ModelAttribute类。我希望使用普通HTML表单,并使用
@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