如何直接向另一个动作提交按钮

时间:2010-06-10 13:16:56

标签: grails

如何在控制器中跳转到另一个动作?

我有表单和几个提交按钮。每个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"  /> 

非常感谢 汤姆

2 个答案:

答案 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会更好。