在表格上我有两个提交按钮:
<g:submitButton name="add" value="Add"/>
<g:submitButton name="addAnother" value="Add and Create Another"/>
我需要根据用于提交表单的按钮采取稍微不同的操作。如何获取控制器中单击按钮的名称?
答案 0 :(得分:6)
点击按钮的名称以params结尾:
if(params["addAnother"])
doThis()
else
doThat()
答案 1 :(得分:0)
来自标签docs:
actionSubmit
生成一个映射到特定操作的提交按钮, 这使您可以在一个表单中有多个提交按钮。 (......) 当您在表单中使用常规提交按钮时,它就是表单 本身确定请求发送到哪个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作为将表单数据传递给控制器中不同行为(操作)的首选方式。即使您之间存在大多数常见行为,也可以考虑重构控制器代码,而不是在操作中测试请求参数。