Установить ключ и значение параметра в списке выбора Grails?

В настоящее время я работаю над приложением Grails, и я ищу список выбора на странице, и для его ключа установлено одно значение, а для значения - другое. Код всех связанных элементов приведен ниже:

Объект домена:

class Cars {
  String carType
  String car
}

Контроллер:

def create() {
  List cars = Cars.list()
  [dealerInstance: new Dealer(params), cars: cars]
  render(text:"This site in curently under Maintainence!")
}

Просмотр:

<g:select name="cars.id" from="${cars}" optionKey="${carType}" optionValue="${car}"/>

Теперь, когда я запускаю этот код, список заполняется, однако данные выглядят так:

<select id="cars.id" name="cars.id">
  <option value="com.app.Cars : 1">com.app.Cars : 1</option>
  <option value="com.app.Cars : 2">com.app.Cars : 2</option>
  <option value="com.app.Cars : 3">com.app.Cars : 3</option>
</select>

а затем, когда я пытаюсь это:

Просмотр:

<g:select name="cars.id" from="${cars.car}" optionKey="${carType}" optionValue="${car}"/>

Я получаю следующее:

<select id="cars.id" name="cars.id">
  <option value="Audi">Audi</option>
  <option value="BMW">BMW</option>
  <option value="Scoda">Scoda</option>
</select>

Это совсем не то, чего я хочу. Я хочу иметь возможность установить другую пару значений ключа в этом списке выбора, чтобы я мог использовать эти данные в своем приложении, я бы хотел, чтобы было сгенерировано следующее:

<select id="cars.id" name="cars.id">
  <option value="Saloon">Audi</option>
  <option value="Hatch Back">BMW</option>
  <option value="Estate">Scoda</option>
</select>

Может кто-нибудь, пожалуйста, скажите мне, как мне добиться этого в Grails???


person user723858    schedule 06.11.2012    source источник


Ответы (1)


Попробуй это:

<g:select id="cars.id" name="cars.id" from="${cars}" optionKey="carType" optionValue="car"/>

Что в основном происходит:

Когда вы используете атрибут from, тег выполняет итерацию по списку, который вы передали в качестве аргумента. optionKey и optionValue должны быть строками, представляющими атрибуты, к которым вы хотите получить доступ в текущем объекте (к которому обращается итератор).

person Tiago Farias    schedule 06.11.2012
comment
Ага... optionKey и optionValue должны быть строками. - person doelleri; 06.11.2012
comment
Как это сработало :), однако теперь мне нужно создать метку, которая показывает значение KEY выбранного элемента всякий раз, когда список выбора изменяется, есть идеи? Я думал JavaScript? - person user723858; 06.11.2012
comment
Да, я думаю, Javascript — ваш лучший выбор. Однако новый вопрос. - person Tiago Farias; 06.11.2012