привязка пружинной модели с отключенным вводом - PullRequest
0 голосов
/ 04 июля 2018

извините за глупый вопрос, но я не совсем понимаю, что происходит, и если это то, что я подозреваю ... ну, я действительно в растерянности. Я использую 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, но это тоже не помогло.

1 Ответ

0 голосов
/ 04 июля 2018

Здесь есть недоразумение, я думаю об использовании disabled.

Элемент readonly просто недоступен для редактирования, но отправляется, когда По форме отправляет . disabled элемент не доступен для редактирования, а - нет отправлено при отправке . Другое отличие состоит в том, что readonly элементы могут быть сосредоточиться (и сосредоточиться, когда "вкладки" через форму) в то время как disabled элементы не могут.

Более подробное сравнение

Итак, чтобы ответить на ваш вопрос: вам следует выбрать readonly, если вы хотите связать свои атрибуты с pojo, и все же пользователь не может их редактировать.

...