在 Grails 中,如何从 g:select 调用控制器操作

Posted

技术标签:

【中文标题】在 Grails 中,如何从 g:select 调用控制器操作【英文标题】:In Grails, how to invoke a controller action from a g:select 【发布时间】:2009-11-09 17:54:52 【问题描述】:

在我看来,我使用的是 g:select(实际上是 g:currencySelect)。

我希望在用户更改结果选择框中的值后立即触发控制器操作。

我该怎么做?

【问题讨论】:

【参考方案1】:

我想我在这里回答了我自己的问题,但如果有更好的方法,请告诉我:

在 select 标签中使用 onchange javascript 函数:

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

【讨论】:

假设我不必定义 submit() 的作用,这对我不起作用。 submit() 将提交表单。你没有定义 submit(),但是你需要一个对应的控制器来处理提交,在这个例子中会有一个 ChangeCurrencyController 和一个名为 changeCurrency() 的动作。 对不起,如果您的表单中没有使用名称“submit”的其他内容,则 submit() 有效。我在 ***.com/questions/833032/… 的帮助下找到了我的错误 如果我想调用不同的控制器方法来提交而不是 onChange 怎么办?【参考方案2】:

另一种方式可以是:


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

【讨论】:

【参考方案3】:

如果你想要一个 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 中工作

【讨论】:

以上是关于在 Grails 中,如何从 g:select 调用控制器操作的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个 grails 插件配置 grails 插件

Grails / Spock:如何在类中模拟从类本身调用方法的单个方法?

Grails - 如何从 WAR 中删除 log4j

Grails - 如何从表单调用控制器方法

如何从 jQuery 发送数组并将其显示在 grails 控制器中?

如何从源代码安装 Grails 插件?