在 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 / Spock:如何在类中模拟从类本身调用方法的单个方法?