2010-09-07 63 views
3

我剛剛進入Grails的舞臺。更新下拉值<G:submitToRemote>

我有,我想提出一個下拉菜單,一個頁面上的一個按鈕的要求,並通過點擊只是按鈕的下拉值應該改變,頁面上的其他控件應保持不變。

我的代碼如下:

_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) 
} 

因此,在上述情況下,它的設置中的值設備完美,但在下降的觀看側向下m到處全connType頁,我而不僅僅是控制器的設備變量中的列表值。

任何幫助將高度讚賞..

+0

你是什麼意思有:讓整個connType頁? – amra 2010-09-07 06:32:17

+0

@amra:雅,我覺得我做的錯誤有隻...所以,我應該怎麼寫與渲染,如果我需要只刷新下拉id爲mappedDevice? – Nirmal 2010-09-07 06:50:17

+0

那麼你的模板是什麼樣子?你真的想要更新的div中包含的下拉菜單嗎? – 2010-09-07 14:21:03

回答

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"/> 

這應該讓你開始正確的方向。

+0

這看起來不錯。 – amra 2010-09-07 21:26:22