Мне нужно написать функцию, которая позволяет пользователю дублировать форму, скажем, контракт, от компании к другой.
В моем duplicateController я просто загружаю форму и проверяю ее. Чтобы отобразить проблему ниже каждого ошибочного поля, я пытаюсь создать BindingResult непосредственно в контроллере.
ContractForm contractForm = new ContractForm();
BindingResult bindingResult = (new DataBinder(contractForm )).getBindingResult();
model.addAttribute(BindingResult.MODEL_KEY_PREFIX + "contractForm", bindingResult);
contractService.getContractForCopy(contractForm, contractId, bindingResult);
Затем, когда я показываю свои ошибки в тимелист, все выглядит нормально.
<label class="error" th:if="${#fields.hasErrors('invoiceEndDate')}" th:errors="*{invoiceEndDate}"></label>
Моя проблема в том, что если я посмотрю на отображаемые данные, все аннотации форматирования будут пропущены, поэтому мои даты / числа будут ko.
Когда я отлаживаю в коде Spring, я вижу, что в обычном случае (когда пользователь отправляет форму или когда я загружаю форму без переопределения BindingResult), у меня есть много Formatter в "ConversionService" в объекте BeanPropertyBindingResult ,
Но когда я дублирую свою форму, «ConversionService» будет пустым. Так что все мои поля отображаются неправильно.
Итак, мои вопросы:
1) Это хороший способ сделать это? Я имею в виду, как загрузить форму и добавить некоторые дополнительные FieldErrors, чтобы пользователь знал, что форма не в порядке
2) Если нет, я все еще могу добавить дополнительные ошибки в модель, но я не хочу добавлять этот вид кода под каждым полем:
<label class="error" th:if="${#fields.hasErrors('invoiceEndDate')}" th:errors="*{invoiceEndDate}"></label>
и этот для ошибки, управляемой вручную
<label class="error" th:if="${#mySpecificErrorForThisField!=null}" th:errors="*{mySpecificErrorForThisField}"></label>
3) Нужно ли в этом случае вручную регистрировать весь форматтер?
Спасибо.