Как связать данные в командный объект, который имеет вложенное свойство?(не домен объект)
-
14-11-2019 - |
Вопрос
Я пытаюсь связать некоторые данные для объекта, который является частью командного объекта.Объект остается NULL, пытаясь его использовать.Вероятно, я не даю правильные данные в GSP, но я понятия не имею, что я делаю не так!
Я ожидал, что когда я отправлю форму с именем поля «Book.title», это будет отображаться в командный объект. Но это не удалось. Название остается [NULL]
всякий раз, когда я изменяю командный объект и форму, чтобы использовать заголовок строки в качестве свойства, которая работает ..
// the form that submits the data
<g:form>
<g:textField name="book.title" value="Lord Of the Rings"/><br>
<br><br>
<g:actionSubmit action="create" value="Create!"/>
</g:form>
// the controller code
def create = { BooksBindingCommand cmd ->
println cmd?.book?.title // the book property always stays null
redirect(action: "index")
}
// the command object
class BooksBindingCommand {
Book book
}
// the book class, simple plain groovy class
class Book {
String title
}
.
Любое предложение по тому, почему переплет «книга. Title» не удается?
Решение
Попробуйте инициализировать его перед привязкой, как:
// the command object
class BooksBindingCommand {
Book book = new Book()
}
. Другие советы
Просто быстрое удар на нем.
Имя поля формы, вероятно, должно быть book_title, а не использовать период (не уверена, если он станет проблемой при обработке в контроллере).
<g:textField name="book_title" value="Lord Of the Rings"/><br>
.
В вашем контроллере сначала создайте модель вашей книги, затем назначьте ее в класс, который вы хотите.
def create = {
def mybook = new Book()
mybook.title = params.book_title
def binder = new BooksBindingCommand()
binder.book = mybook
}
.
- это модель книг?Потому что я не уверен, что вы пытаетесь достичь.