2011-05-19 4 views
0

hey. J'ai quelque chose comme ceci:grails databinding get id de select

class Car{ 
String name 

} 

class Volante{ 
String name 
Car car 
} 

Et mon dossier gsp:

<g:form controller="volante" action="save"> 
<label>Car</label> 
<g:select name="car.id" from="${cm.Car.list()}" optionKey="id" value="${car?.id}" /><br><br><br> 

<label>name 
</label> 
<input type="text" name="name" value="${volante?.name}" /> 
</g:form> 

def save = { 
     def volante= new Volante() 



     volante.car = params.car.id ################ 

     volante.name = params.name 



      if (!volante.save(failOnError: true)) { 
     render (view: "/participatedAdd", model : [volante: volante]) 
     return 
    } 

     render(view: "/participated") 

    } 

J'ai des problèmes où je le ###########. Comment peut-on faire comme ça =? Je ne sais pas comment obtenir l'id de voiture pour lier au volante.car. Toute aide serait appréciée.

PS. Je n'utilise pas def volante = new Volante (params) car ma vue est plus complexe que ça. Et dois-je utiliser dans les valeurs de la vue "className.attribute" ?? Parce que je lie plusieurs classes de domaine.?

Répondre

2
def car = Car.get(params.car.id) 
volante.car = car 

Avez-vous essayé quelque chose dans quelque chose comme ça?

+0

gona essayer: p merci – robert

0

Vous pouvez essayer:

volante.car = Car.get(params['car.id']) 

Mais vous pouvez aussi utiliser les données de Grails se liant à lier la propriété spécifique:

def volante = new Volante() 
volante.properties['car'] = params 

Comme le nom du paramètre est car.id, Grails reconnaîtra que vous 're cartographie l'association par id et liez-le pour vous.