2011-02-07 199 views
1

我正在学习如何使用Grails,遇到了我不明白何时应该提交简单表单提交的情况。Grails操作适用于GET请求,返回404 POST请求

我创建了一个名为'add'的控制器(有一个AddController.groovy源文件和一个合适的add/index.gsp视图),并定义了一个非常稀疏的'process'动作,它目前呈现少量的HTML以验证该操作正在被调用。 (不出意外)http://localhost:8080/frontend/add/process/

我想向流程操作提交一个非常简单的表单,作为与某些现有Java库集成的第一步。

http://localhost:8080/frontend/add/process/发送GET请求会导致调用进程动作,浏览器显示相关的简单HTML内容。

http://localhost:8080/frontend/add/process/发送POST请求会返回HTTP 404错误。

我很欣赏我错过了一些基本的补充,我的应用程序,使上述行动与GET和POST请求。我默认假设请求类型无关紧要。

如果我可以发送一个POST请求到适当的动作,并有一些标记只是为了演示事情正在工作,我会很高兴在这个阶段。

我错过了什么从根本上解决了难题?

控制器/前端/ AddController.groovy:

package frontend 

class AddController { 

    def index = { } 

    def process = { 
     render "<h1>process action being performed</h1>" 
    } 
} 

视图/添加/ index.gsp中

<html> 
    <head> 
     <title>Test View for index action</title> 
     <meta name="layout" content="main" /> 
    </head> 
    <body> 
    <g:form controller="add" action="process"> 
     <label for="title">Title:</label> 
     <g:textField name="title" id="title" /> 
     <label for="content">Content:</label> 
     <g:textArea name="content" id="content" /> 
     <g:actionSubmit value="Add" /> 
    </g:form> 
    </body> 
</html> 

回答

14

<g:actionSubmit />指令需要一个action属性以指示动作来处理。我曾假定表单行动已经足够。

我需要改变:

<g:actionSubmit value="Add" /> 

到:

<g:actionSubmit value="Add" action="process" /> 
+0

保存一天......最后得到了这个答案花两小时后。 – codesnooker 2014-04-30 10:03:50