【发布时间】:2018-03-20 12:12:07
【问题描述】:
在一个表单上我有两个提交按钮:
<g:submitButton name="add" value="Add"/>
<g:submitButton name="addAnother" value="Add and Create Another"/>
我需要根据用于提交表单的按钮采取稍微不同的操作。如何获取控制器中点击按钮的名称?
【问题讨论】:
标签: grails
在一个表单上我有两个提交按钮:
<g:submitButton name="add" value="Add"/>
<g:submitButton name="addAnother" value="Add and Create Another"/>
我需要根据用于提交表单的按钮采取稍微不同的操作。如何获取控制器中点击按钮的名称?
【问题讨论】:
标签: grails
被点击按钮的名称以 params 结尾:
if(params["addAnother"])
doThis()
else
doThat()
【讨论】:
来自标签文档:
提交操作
生成映射到特定操作的提交按钮, 这使您可以在一个表单中拥有多个提交按钮。 (...) 当您在表单中使用普通提交按钮时,它就是表单 它本身决定请求发送到哪个 URL,因此 执行什么动作。但是,此标签会覆盖该行为 并确定执行哪个动作。请注意,它仍然是 确定目标控制器的表单。
<g:form controller="book">
<g:actionSubmit value="click to update" action="update" />
<g:actionSubmit value="click to delete" action="delete" />
</g:form>
尽管您提到每个按钮的操作之间存在“细微差别”,但在 grails 标记中,我建议将 actionSubmit 作为将表单数据传递给控制器中不同行为(操作)的首选方式。即使您在它们之间有大部分共同行为,也请考虑重构您的控制器代码,而不是在您的操作中测试请求参数。
【讨论】: