Comment lier des données à un objet de commande qui a une propriété imbriquée? (objet non domaine)

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

  •  14-11-2019
  •  | 
  •  

Question

J'essaie de lier certaines données à un objet qui fait partie d'un objet de commande. L'objet reste nul lorsque vous essayez de l'utiliser. Je ne donne probablement pas les données correctes dans le GSP, mais je n'ai aucune idée de ce que je fais de mal!

Je m'attendrais à ce que lorsque je soumet un formulaire avec un nom de champ 'book.title' Cela serait mappé dans l'objet de commande .. mais cela échoue .. le titre reste [null

Chaque fois que je change l'objet de commande et le formulaire pour utiliser le titre de chaîne comme propriété, il fonctionne.

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

Une suggestion sur la raison pour laquelle la liaison de «book.title» échoue?

Était-ce utile?

La solution

Essayez de l'initialiser avant de se lier, comme:

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

Autres conseils

Juste un coup rapide.

Le nom du champ de formulaire doit probablement être book_title plutôt que d'utiliser une période (je ne sais pas si cela devient un problème lorsqu'il est géré dans le contrôleur).

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

Dans votre contrôleur, créez d'abord votre modèle de livre, puis attribuez-le à la classe que vous souhaitez être liée.

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

Le BooksbindingCommand est-il un modèle? Parce que je ne sais pas ce que vous essayez de réaliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top