Как выполнить код перед проверкой @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);
}