Предпочтительно использовать th:action
в качестве атрибута формы вместо action
и указать привязку следующим образом:
<form th:action="@{/the-action-url}" method="post"
th:object="${myEntity}">
<div class="modal-body">
<div class="form-group">
<label for="name">Name</label> <input type="text"
class="form-control" id="name" th:field="*{name}"> </input>
</div>
<div class="form-group">
<label for="description">Description</label> <input type="text"
class="form-control" id="description"
th:field="*{description}"> </input>
</div>
</div>
</form>
Я поддерживаю эту форму контроллером Spring, который инициализирует атрибут модели (объект myEntity
в форме). Это соответствующая часть класса контроллера:
@ModelAttribute(value = "myEntity")
public Entity newEntity()
{
return new Entity();
}
Аннотация @ModelAttribute
гарантирует, что объект модели инициализируется Spring для каждого запроса.
Установите модель с именем «command» во время первого запроса на получение вашего контроллера:
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView getRanks(Model model, HttpServletRequest request)
{
String view = "the-view-name";
return new ModelAndView(view, "command", model);
}
И, чтобы получить доступ к модели в том виде, в каком она получается после отправки формы, реализуйте относительный метод:
@RequestMapping(value = "/the-action-url", method = RequestMethod.POST)
public View action(Model model, @ModelAttribute("myEntity") Entity myEntity)
{
// save the entity or do whatever you need
return new RedirectView("/user/ranks");
}
Здесь параметр, аннотированный @ModelAttribute
, автоматически привязывается к отправленному объекту.
person
Evil Toad
schedule
17.08.2015