【问题标题】:How to validate a MultipartFile using HibernateValidator?如何使用 HibernateValidator 验证 MultipartFile?
【发布时间】:2012-12-04 22:47:28
【问题描述】:

我在绑定到 Spring 表单的支持 bean 中有一个 MultipartFile 类型的字段(我正在使用 MultipartFilter),

<form:form htmlEscape="false" action="${pageContext.request.contextPath}/admin_side/Category.htm" id="dataForm" name="dataForm" method="post" commandName="categoryBean" enctype="multipart/form-data">

    <input type="file" id="txtCatImage" name="txtCatImage"/>

</form:form>

支持豆,

final public class CategoryBean
{
     private MultipartFile txtCatImage=null;

     public MultipartFile getTxtCatImage()
     {
          return txtCatImage;
     }

     public void setTxtCatImage(MultipartFile txtCatImage)
     {
         this.txtCatImage = txtCatImage;
     }
}

我曾尝试应用 @NotEmpty 之类的注释,但没有成功。他们最终得到了一个例外。

javax.validation.UnexpectedTypeException:找不到验证器 对于类型:org.springframework.web.multipart.MultipartFile

我正在使用 Validation-API 1.0.0。如果用户没有上传文件并使用HibernateValidator按下提交按钮,这是否可以执行验证?

【问题讨论】:

  • 以前似乎有人问过同样的问题。检查这个link
  • @Angel Villalain - 感谢您的链接。但这个问题是关于org.springframework.validation.Validator。我过去常常使用像SimpleFormController 这样的老式控制器来执行验证。我正在使用带有 HibernateValidator 的带注释的控制器,该方法无法使用。

标签: spring hibernate validation multipartform-data hibernate-validator


【解决方案1】:

现在我了解您具体要完成的工作。好吧,您可以实现自己的自定义验证。例如,不实现 Spring 验证器接口,而是实现 Hibernate ConstraintValidator,用于您为此特定情况定义的特定注释。检查此link。在这种情况下,您可以为MultipartFile 对象添加@NotNull 验证器的实现。

【讨论】:

  • 直到现在我已经熟悉cross field validation,但不熟悉这个。根据您答案中的链接完成。谢谢。
  • Cross field 是我仍然必须尝试的东西,我认为这是最近添加到休眠验证器的。
【解决方案2】:

将 bean 方法检查文件的约束放在空虚上对我有用:

final public class CategoryBean
{
  private MultipartFile txtCatImage = null;
  public MultipartFile getTxtCatImage() { return txtCatImage; }
  public void setTxtCatImage(MultipartFile txtCatImage) { this.txtCatImage = txtCatImage; }

  @AssertTrue(message = "File must be provided")
  public boolean isFileProvided() {
    return (txtCatImage != null) && ( ! txtCatImage.isEmpty());
  }
}

【讨论】:

    猜你喜欢
    • 2015-02-12
    • 2012-08-07
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多