привязка данных grails получает идентификатор из select

#data-binding #grails

#привязка данных #grails

Вопрос:

привет. у меня есть что-то вроде этого:

 class Car{
String name

}

class Volante{
String name
Car car
}
  

И мой файл 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")

    }
  

У меня проблемы, когда у меня ###########. Как это можно сделать таким образом =? Я не знаю, как получить идентификатор автомобиля для ссылки на volante.car. Любая помощь была бы оценена.

PS. я не использую def volante = new Volante (параметры), потому что мое представление более сложное, чем это. И должен ли я использовать в значениях из представления «className.attribute»?? Потому что я привязываю несколько классов домена.?

Ответ №1:

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

Вы пробовали что-то подобное?

Ответ №2:

Вы могли бы попробовать:

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

Но вы также могли бы просто использовать привязку данных Grails для привязки определенного свойства:

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

Поскольку имя параметра равно car.id , Grails распознает, что вы сопоставляете ассоциацию по идентификатору, и привяжет ее для вас.