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

时间:2012-11-06 15:26:41

标签: grails key key-value selectlist

我目前正在处理Grails应用程序,我正在寻找页面上的选择列表,并将其Key设置为一个值,将Value设置为另一个值。所有相关元素的代码如下:

域对象:

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中实现这个目标吗?

1 个答案:

答案 0 :(得分:8)

试试这个:

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

基本上发生了什么:

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