Как выполнить код перед проверкой @InitBinder - PullRequest
0 голосов
/ 09 января 2019

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

В моем основном контроллере я использую @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 Ответ

0 голосов
/ 09 января 2019

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

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