2

重複の可能性:
Spring MultipartFile の検証と変換

ファイルがjspページからユーザーによって提供されたかどうかを確認する必要があります。

コードは次のとおりです。

デバッグ モードで実行すると、ファイルが提供されていませんが、ファイル (MultiPartFile) は null ではありません。

すべてに注釈ベースの検証を使用したいと考えています。

どんな助けでも大歓迎です。

    <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 {
4

1 に答える 1

0

この目的のためのバリデーターは組み込まれていないと思います。したがって、独自に構築する必要があります。

@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 { };
}

バリデーター:

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なしでこれを書いたので、構文エラーがあるかもしれません。

于 2012-10-15T06:26:33.880 に答える