Como vincular dados de um objecto de comando que tem uma propriedade nested?(não objeto de domínio)

StackOverflow https://stackoverflow.com/questions/9011156

  •  14-11-2019
  •  | 
  •  

Pergunta

Estou tentando ligar alguns dados para um objeto que faz parte de um objeto de comando.O objeto permanece nulo quando tentar utilizá-lo.Provavelmente, eu não estou dando os dados corretos no spg, mas eu não tenho nenhuma idéia do que estou fazendo de errado!

Espero que quando eu enviar um formulário com um nome de campo " do livro.o título' isso seria obter mapeada para o objeto de comando..mas essa falha..O título permanece [null]

Sempre que eu altere o objecto de comando e formulário para utilizar o título de Cadeia como propriedade funciona ...

// 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
}

Qualquer sugestão sobre qual a vinculação do livro.título de " falha?

Foi útil?

Solução

Tente inicializar antes de enlace, como:

// the command object
class BooksBindingCommand {
   Book book = new Book()
}

Outras dicas

Basta uma rápida facada nele.

O nome de campo de formulário provavelmente deve ser book_title em vez de usar um período (não tenho certeza se isso se torna um problema quando tratada no controlador).

<g:textField name="book_title" value="Lord Of the Rings"/><br>

No seu controller, crie o seu livro primeiro modelo, em seguida, atribuir a ele a classe que você quer que ele vinculado.

def create = {
  def mybook = new Book()
  mybook.title = params.book_title
  def binder = new BooksBindingCommand()
  binder.book = mybook
}

É o BooksBindingCommand um modelo?Porque eu não tenho certeza do que você está tentando alcançar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top