Как выполнить код перед проверкой @InitBinder

У меня есть программа, которая имеет функцию, чтобы загрузить файл, а затем проверить правильность формата имени и сохранить его в БД.

В моем главном контроллере я использую @InitBinder для проверки.

@InitBinder("uploadFileForm")
    protected void initBinderUploadForm(WebDataBinder binder) {
        binder.setValidator(fileNameFormatValidator);
    }

В моем методе проверки я использую этот фрагмент кода:

static void validateFileName(String fileUploadKey, MultipartFile file, Errors errors) {
        Matcher validFilenameMatcher = VALID_FILE_NAME.matcher(file.getOriginalFilename());
        if (!validFilenameMatcher.matches()) {
            errors.rejectValue(fileUploadKey, null, null, SOME_REGEX);
        }
    }

Я хочу отформатировать имя файла (например, заменить некоторые символы в имени файла), а затем использовать класс валидатора. Таким образом мне нужно изменить имя файла перед проверкой.

Как я могу добиться редактирования имени файла перед проверкой формата с помощью @InitBinder?

Редактировать: никто не отвечает? Или вопрос не понятен?

1 ответ

Почему бы не использовать WebDataBinderКак добавить addCustomFormatter для добавления валидатора?

@InitBinder("uploadFileForm")
protected void initBinderUploadForm(WebDataBinder binder) {
    binder.addCustomFormatter(fileNameFormatter); 
    binder.setValidator(fileNameFormatValidator);
}
Другие вопросы по тегам