在Grails选择列表上设置选项键和值?

在Grails选择列表上设置选项键和值?,grails,key,key-value,selectlist,Grails,Key,Key Value,Selectlist,我目前正在开发一个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

我目前正在开发一个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}"/>
<g:select name="cars.id" from="${cars.car}" optionKey="${carType}" optionValue="${car}"/>
控制器:

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}"/>
<g:select name="cars.id" from="${cars.car}" optionKey="${carType}" optionValue="${car}"/>
查看:

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}"/>
<g:select name="cars.id" from="${cars.car}" 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>

com.app.Cars:1
com.app.Cars:2
com.app.Cars:3
然后当我尝试这个:

查看:

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}"/>
<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中实现这一点吗?

试试这个:

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

基本情况是:


使用from属性时,标记将在作为参数传递的列表上迭代。optionKey和optionValue应该是表示当前对象(由迭代器访问)中要访问的属性的字符串

是的
optionKey
optionValue
都应该是字符串。工作原理:),但是现在我需要创建一个标签,在更改选择列表时显示所选项目的键值,有什么想法吗?我在想JavaScript?是的,JavaScript是你最好的选择。新问题。