2014-09-11 147 views
2

这里是我的Grails(2.3.6)控制器:Grails的形式提交不

class WidgetController { 
    def index() { 
     render(
      view: "createNew", 
      model:[ 
      ] 
     ) 
    } 

    def execute() { 
     println "Executing form submission!" 
     redirect(action: "listAll") 
    } 

    def listAll() { 
     // Does some stuff 
    } 
} 

index URL是,比如说,http://localhost:8080/myapp/widget。这个想法是,当有人转到这个URL时,他们会看到一个HTML表单。当他们填写表单时,他们被发送(在服务器端)到​​方法中,该方法执行一些重要的事情,然后将它们重定向到listAll()方法,该方法执行一些最终的东西并呈现网页供他们查看。

这里是关于createNew.gsp HTML表单(从index()方法呈现:

<g:form name="create-new-form" url="[action:'execute',controller:'widget']"> 
    <table class="pure-table pure-table-bordered"> 
     <tr> 
      <td class="row-header">Fizz:</td> 
      <td><g:textField id="app-fizz" name="fizz" /></td> 
     </tr> 
     <tr> 
      <td class="row-header">Buzz:</td> 
      <td><g:textField id="app-buzz" name="buzz" /></td> 
     </tr> 
    </table> 
    <g:actionSubmit value="Create" /> 
</g:form> 

当我去这个网址,并提交表格(点击创建按钮),我重定向到http://localhost/myapp/widget/execute这显示我的自定义错误页的一个(基本上是“对不起,该网页无法使用‘型的错误。

此外,在日志的输出,我println说明’执行表单提交! 。“不烧这告诉我,我没有什么正确的接线方式:Grails是试图重定向到URL /execute但不知何故没有连接与我的控制器的​​方法思路是URL

回答

3

与尝试。? :

<g:actionSubmit action="execute" value="Create" /> 

如果您g:actionSubmit指定唯一的价值就具有这个标签的创建按钮,并重定向到行动基于该值如果操作名称是比按钮标签应指定actionvalue属性不同看一看。在documentation

请注意,如果您使用g:actionSubmitg:form的动作属性将被忽略(您指定的是btw。)。您可以在上面链接的文档中找到更多信息,以供参考。

+0

钉钉它 - 谢谢! – smeeb 2014-09-11 12:56:58

+0

没问题;)我刚刚添加了一些额外的信息给我的答案。 – 2014-09-11 13:02:37

0

使用普通的<input type="submit" value="go"/>。因此表单被提交到<g:form>中定义的URI标签

g.actionSubmitg.submitButton是需要的,如果您想要在其他地方提交您的表格。