如何在控制器中跳转到另一个动作?
我有表单和几个提交按钮。每个submmit按钮都有名称。
<g:form action="save" method="post">
<g:input name="title" value="${letter.title}" />
<g:input name="comments[0].text" value="${letter.comments[0].text}" />
<g:submitButton name="save" value="save" />
<g:submitButton name="addComment" value="add" />
</g:form>
def save = {
if (params.addComment){
letter.addToComents( new Comment() )
render(view:'form', model:["letter": letter])
return
}
...
if ( letter.save() )
...
}
def addComment = {
...
}
它有效,但不好。我想将块“addComment”中的代码移动到动作addComment:
def save = {
if (params.addComment){
// it don´t work
redirect ( action:"addComment" )
}
...
if ( letter.save() )
...
}
def addComment = {
letter.addToComents( new Comment() )
render(view:'form', model:["letter": letter])
return
}
或者它存在更好的解决方案? 这会很好:
<g:submitButton name="save" value="save" action="save" />
<g:submitButton name="addComment" value="add" action="addComment" />
非常感谢 汤姆
答案 0 :(得分:13)
请改用g:actionSubmit标记。
<g:form method="post">
<g:input name="title" value="${letter.title}" />
<g:input name="comments[0].text" value="${letter.comments[0].text}" />
<g:actionSubmit action="save" value="Save" />
<g:actionSubmit action="addComment" value="Add Comment" />
</g:form>
答案 1 :(得分:0)
对于那些使用Twitter Bootstrap插件(或者需要除按钮中的文本之外的东西)并想要在按钮上添加glyphicon的人,您需要使用按钮标记。所以你需要做一些像
这样的事情SNIPPET 1。
<g:form role="form" method="post">
...your inputs
<button type="submit" name="_action_save">
<span class="glyphicon glyphicon-ok"></span>
Save
</button>
<button type="submit" name="_action_saveAndNew">
<span class="glyphicon glyphicon-ok"></span>
Save and New
</button>
</g:form>
在按钮中,您需要使用前缀
指定操作的名称 _action_
得到这样的东西
name="_action_yourActionName"
稍微提醒一下,因为我正在使用twitter Bottstrap插件3.0这就是你添加一个glyphicon的方法
<span class="glyphicon glyphicon-ok"></span>
SNIPPET 1.有类似的行为:
<g:form role="form" method="post">
...your inputs
<g:actionSubmit action="save" value="Save" />
<g:actionSubmit action="saveAndNew" value="Save and New" />
</g:form>
最后,在您不想要或不能使用它的情况下,此示例可帮助您获得与actionSubmit类似的行为。这只是一种替代方案,尽可能使用actionSubmit会更好。