我目前正在处理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中实现这个目标吗?
答案 0 :(得分:8)
试试这个:
<g:select id="cars.id" name="cars.id" from="${cars}" optionKey="carType" optionValue="car"/>
基本上发生了什么:
当您使用 from 属性时,标记会迭代您作为参数传递的列表。 optionKey和optionValue应该是表示要在当前对象中访问的属性的字符串(由迭代器访问)。