Как установить значение по умолчанию в grails g:select?

У меня есть доменный объект Город

City{
Long id
String city
...
 String toString() {
        return "$city"
 }
}

Скажем, таблица такая.

id  name 
1   ABC
2   PQR
3   XYZ

список городов, которые я населяю в gsp, вот так

<g:select name="city" from="${City.list()}"  />

Теперь мне нужно заполнить значение по умолчанию города, который приходит из контроллера, что-то вроде этого

cmd.city = "PQR"
render template:'messageDisplay', model:[cmd: cmd]

Сейчас я пытаюсь заполнить значение по умолчанию "PQR" в списке выбора

<g:select name="city" from="${City.list()}" value="${cmd.city}" />

но "PQR" не отображается в качестве значения по умолчанию.

1 ответ

Решение

У вас есть объекты Strings и City, и вы пытаетесь сравнить их...

Измените свой выбор на:

<g:select name="city"
          from="${City.list()}"
          value="${cmd?.city?.id}"
          optionKey="id" />

И в вашем контроллере:

cmd.city = City.findByName( "PQR" )
Другие вопросы по тегам