2014-11-10 2 views
0

Я использую объекты поддержки формы, которые разделяют абстрактный базовый класс. Одно из свойств этого базового класса называется model, но оно может представлять что-либо из объектов моей модели домена.Правильный способ использования th: с локальной переменной Thymeleaf в форме

Теперь то, что я хотел бы сделать, это использовать th:with для того, чтобы переименовать model свойство имени моих сущностей т.е. curriculum, advertisement и т.д., таким образом, мои различные шаблоны Thymeleaf будут читать лучше с advertisement чем model.

Вот что я пробовал:

<form th:object="${advertisementForm}" th:with="advertisement=*{model}" th:action="@{${postUrl}}" method="post" class="form-horizontal"> 

(model является свойством advertisementForm)

Когда я затем попытаться получить доступ к моему недавно созданной advertisement переменную следующим образом:

<input type="hidden" th:field="${advertisement.id}"/> 

Я получаю:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'advertisement' available as request attribute 

указывает, что локальная переменная не используется.

ответ

0

использование я: с это хорошо, но для я: поле некорректные

возможных пути для я: полей, которые будут использоваться

th:field="*{model.id}" -- here * can be read as a direct replacement of the form object defined with th:object 

th:field="${advertisementForm.model.id}" --- if you are $ you need to define the complete path 

возможным решением Вместо использования я: поле Использовать HTML ID & имя. Установите значение, используя й: значение

<input class="form-control" 
      type="text" 
      th:value="${client.name}" id="clientName" name="clientName" /> 

Но я бы не настоятельно рекомендую не делать, потому что, как упомянуто здесь http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#inputs

Смежные вопросы