#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 распознает, что вы сопоставляете ассоциацию по идентификатору, и привяжет ее для вас.