В Grails, как вызвать действие контроллера из g: select

Я использую g: select (на самом деле, G:currencySelect) в моем представлении.

Я хочу, чтобы действие контроллера сработало, как только пользователь изменит значение в результирующем поле выбора.

Как я могу это сделать?

3 ответов


Я думаю, что я отвечаю на свой вопрос, но дайте мне знать, если есть лучший способ сделать это:

используйте функцию onChange javascript в теге select:

<g:form controller="changeCurrency" action="changeCurrency">
    <g:select onchange="submit()"/>
</g:form>

другой способ может быть:


    <g:select name="someName" from="${list}" onchange="goToPage(this.value)"/>

    <script type="text/javascript">

    function goToPage(requestParams){
    window.location.href="${createLink(controller:'controllerName' ,action:'actionName' ,params:[paramsName:""])}" + requestParams;
    }

    </script>
    

Если вам нужен запрос ajax, попробуйте следующее:

<g:select name="type" from="${['import-a', 'import-b']}"
onchange="jQuery('#addArea').load('/app/import/chooseImportType/' +
jQuery('#type').val())"/>

в контроллере:

def chooseImportType (){
 render params.id
}

работал в Grails 2.0.4