Grails操作适用于GET请求,返回404以获取POST请求

时间:2011-02-07 19:15:39

标签: grails groovy

我正在学习使用Grails,在处理简单表单提交时遇到了一些我不理解的情况。

我创建了一个名为'add'的控制器(有一个AddController.groovy源文件和一个合适的add / index.gsp视图),并定义了一个非常稀疏的'进程'动作,该动作当前呈现少量HTML验证是否正在调用该操作。

添加控制器上的流程操作的URL(不出所料)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>

1 个答案:

答案 0 :(得分:14)

<g:actionSubmit />指令需要action属性来指示要处理的操作。我认为表格行动已经足够了。

我需要改变:

<g:actionSubmit value="Add" />

为:

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