我刚进入Grails舞台。
我有一个要求,我想在一个页面上放置一个下拉菜单和一个按钮,并且只需按下按钮即可更改下拉值,页面上的其他控件应保持不变。
我的代码如下:
_connType.gsp
<div id="mappedDeviceDiv">
<select id="mappedDevice" name="mappedDevice" value="" style="width:200px">
<g:each in="${deviceList}" status="i" var="dl">
<option value="${dl}">${dl}</option>
</g:each>
</select>
<g:submitToRemote class="blackButton" update="mappedDeviceDiv"
url="${[controller:'resource',action:'getDeviceList']}"
value="Get Devices"/>
</div>
ResourceController.groovy
def getDeviceList = {
println "Getting NV devices.. + Nirmal" + params
def model = buildAccessRequestModel()
List<NVDeviceBean> deviceList = NVUtil.getDevices(params.datasource, null);
Collections.sort(deviceList);
List<String> devices = []
for(NVDeviceBean deviceBean : deviceList) {
devices.add(deviceBean.getName())
}
println "list = "+devices
model.putAt('deviceList', devices)
render (template:'config/connType',model:model)
}
因此,在上面的场景中,它在设备中完美地设置了值,但是在下拉的视图侧获取整个connType页面,而不是仅在控制器的设备变量中的列表值。
任何帮助都将受到高度赞赏..
答案 0 :(得分:3)
您可能希望创建/修改其中一个控制器操作以返回HTML选项列表。你甚至可以让这个动作渲染一个模板。
def getDeviceOptions = {
def options = []
// code that creates the option list goes here.
render(template:'config/optionList', model: [optionList: options ])
}
模板......
<!-- config/_optionList.gsp -->
<g:each in="${optionList}" status="i" var="dl">
<option value="${dl}">${dl}</option>
</g:each>
然后,告诉g:submitToRemote
标记更新选择对象。
<g:submitToRemote class="blackButton" update="mappedDevice"
url="${[controller:'resource',action:'getDeviceOptions']}"
value="Get Devices"/>
这应该让你开始朝着正确的方向前进。