5

我目前正在开发 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 中实现这一目标吗???

4

1 回答 1

8

尝试这个:

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

基本上会发生什么:

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

于 2012-11-06T16:16:43.407 回答