Come associare i dati in un oggetto di comando che ha una proprietà nidificata?(oggetto di non dominio)

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

  •  14-11-2019
  •  | 
  •  

Domanda

Sto cercando di associare alcuni dati su un oggetto che fa parte di un oggetto di comando.L'oggetto rimane null quando si tenta di usarlo.Probabilmente non sto dando i dati corretti nella GSP ma non ho idea di cosa sto facendo male!

Mi aspetterei che quando presenterò un modulo con un nome di campo 'book.title' questo sarà mappato nell'oggetto di comando .. Ma questo fallisce .. Il titolo rimane [NULL]

Ogni volta che modifico l'oggetto di comando e il modulo per utilizzare il titolo della stringa come proprietà funziona ..

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

Qualsiasi suggerimento sul motivo per cui il legame di "Book.Title" fallisce?

È stato utile?

Soluzione

Prova a inizializzarlo prima del legame, come:

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

Altri suggerimenti

solo una pugnalata veloce.

Il nome del campo del modulo dovrebbe probabilmente essere book_title piuttosto che usare un periodo (non sicuro se diventa un problema quando viene gestito nel controller).

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

Nel tuo controller, crea innanzitutto il modello del libro, quindi assegnarlo alla classe che lo desideri.

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

I booksbindingCommand un modello?Perché non sono sicuro di cosa stai cercando di raggiungere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top