【问题标题】:Grails action works for GET request, returns 404 for POST requestGrails 操作适用于 GET 请求,对于 POST 请求返回 404
【发布时间】:2011-02-07 19:15:38
【问题描述】:

我正在学习使用 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>"
    }
}

views/add/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>

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    &lt;g:actionSubmit /&gt; 指令需要一个action 属性来指示要处理的操作。我以为表单操作就足够了。

    我需要改变:

    <g:actionSubmit value="Add" />
    

    到:

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

    【讨论】:

    • 节省了一天... 花了两个小时终于得到了这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多