java - 表单输入文件的 Spring 注释验证

标签 java spring validation

<分区>

Possible Duplicate:
Spring MultipartFile validation and conversion

我需要检查用户是否从 jsp 页面提供了文件。

代码如下。

当我在 Debug模式下运行时,文件 (MultiPartFile) 不为空,尽管未提供该文件。

我想对所有内容使用基于注解的验证。

如有任何帮助,我们将不胜感激。

    <form:form modelAttribute="timeStampIssueParam"
        action="${pageContext['request'].contextPath}/timestamp/issue"
        method="post" enctype="multipart/form-data">
        <fieldset>
            <p>
                <form:label for="file" path="file">PDF Original</form:label>
                <br />
                <form:input path="file" type="file"/>
            </p>
            <p>



    @NotNull
    private List<MultipartFile> file

    public void issue(HttpServletResponse response, @Valid TimeStampIssueParam tsIssueParam, BindingResult result) throws JsonGenerationException, JsonMappingException, IOException {

最佳答案

我认为没有为此目的而构建的 validator 。所以你需要建立自己的:

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Constraint(validatedBy = { OneFileItemValidator.class })
@Documented
public @interface OneFileItem {

    String message() default "{OneFileItem.message}";

    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };
}

validator :

public class OneFileItemValidator
       implements ConstraintValidator<OneFileItem, List<MultipartFile>> {

    @Override
    public void initialize(final OneFileItem constraintAnnotation) {
    }

    @Override
    public boolean isValid(final List<MultipartFile> value, final ConstraintValidatorContext context) {

         //Ignore null values like the most other validators
         if (value == null) return true;

         int foundCounter = 0;
         for (MultipartFile multipartFile : value) {
            if (multipartFile.getSize() > 0) 
               foundCounter++);                
        }
        return foundCounter == 1;
    }
}

用法:

/** Command Object / Form Backing Class */
class TimeStampIssueParam {

    @NotNull
    @OneFileItem
    private List<MultipartFile> file;

}

我是在没有 IDE 的情况下编写的,因此其中可能存在一些语法错误。

关于java - 表单输入文件的 Spring 注释验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888391/

相关文章:

java - 在java中从客户端查找已使用的服务器端口

java - 将 Logback 跟踪日志发送到 Azure 应用程序洞察 - 错误 : failed to send, 错误请求

Spring Security 使用 X.509 身份验证并定期更新授权用户详细信息

java - 如何从 Java 类调用 spring 组件

css - 有效/无效类未添加到预填充文本字段

java - hadoop:无法运行 mapreduce 作业

java - Data Nucleus-MySql 不正确的表定义; auto 列只能有一个并且必须定义为键错误

java - 无法分配ServletContext spring 3

java - 检索从组中选择的 Swing 单选按钮

2 个数字之间的 Javascript 表单验证