извините за глупый вопрос, но я не совсем понимаю, что происходит, и если это то, что я подозреваю ... ну, я действительно в растерянности.
Я использую Spring Boot + Thymeleaf + материализовать CSS, чтобы показать и проверить форму.
вот что я не встречаю во многих примерах, которые я вижу, это случай:
некоторые поля формы предварительно заполнены и должны показаться отключенными для клиента, показывая их предварительно заполненные значения. это предварительное заполнение происходит в контроллере, в то время как я обрабатываю какой-то другой запрос и перенаправляю на это представление
Я связываю pojo с формой, используя th: object вот так
<form id="register_form" action="#" th:action="@{/showform}" th:object="${userInfo}" method="post">
<div class="input-field">
<label th:text="#{label.surname}" for="surname"></label>
<input type="text" th:field="*{surname}" id="surname" th:attr="value=${userInfo.surname}" />
</div>
<div class="input-field">
<label th:text="#{label.name}" for="givenname"></label>
<input type="text" th:field="*{givenname}" id="givenname" th:attr="value=${userInfo.givenname}" disabled="disabled" />
</div></form>
и получение его в обработчике POST контроллера следующим образом:
@RequestMapping(value = {"/showform"}, method = RequestMethod.POST)
public ModelAndView submitFormPage(@ModelAttribute("userInfo") @Valid UserInfo userInfo,
BindingResult bindingResult, RedirectAttributes redir)
{
ModelAndView mview = new ModelAndView();
if (bindingResult.hasErrors())
{
// show form again with error messages
mview.addObject("userInfo", userInfo);
mview.setViewName("/showform");
}
else
{
// ...
}
return mview;
}
RedirectAttributes существует по какой-то другой причине. Как видите, в форме есть два элемента, первый из которых включен, а второй отключен.
Их значения правильно заполнены предварительно заполненными значениями из POJO, которые я передаю в представление через ModelMap. я также могу отследить это в обработчике GET.
но ModelMap, который я получаю из представления, содержит вышеупомянутый POJO со значениями NULL вместо элементов, которые связаны с отключенными элементами управления. я ожидаю, что они будут заполнены содержимым атрибута значения, даже если эти элементы управления отключены. включенные элементы управления имеют свои значения в порядке.
или просто отключенные элементы управления просто не включены в обратную передачу? если это так, как бы вы предложили мне это сделать? некоторые предлагали добавить неясный CSS, который «подделал бы» поведение отключенного элемента управления. или я что-то пропустил в общей проводке?
Я думаю с ужасом возможных обходных путей - но я, должно быть, делаю что-то не так ... th: attr был одним из обходных путей, которые я пробовал, но, похоже, это не сработало. я также попытался использовать th: id и th: disabled, но это тоже не помогло.