Grails post给出400错误

Grails post给出400错误,grails,Grails,我在工作中学习圣杯,所以如果我看起来很无知,请容忍我 我通过IntelliJ设置了多个Grails应用程序,使用默认的Hibernate设置,Tomcat服务器,所有这些都非常简单。我通过终端创建了所有域模型、控制器等。一切都很好,当应用程序启动时,数据从BootStrap.groovy中填充。但是,当我尝试通过web界面(通过ajax或html post)发布内容时,它会返回: POSThttp://localhost:8080/BookApp/book/save 400(错误请求) 绝对Gr

我在工作中学习圣杯,所以如果我看起来很无知,请容忍我

我通过IntelliJ设置了多个Grails应用程序,使用默认的Hibernate设置,Tomcat服务器,所有这些都非常简单。我通过终端创建了所有域模型、控制器等。一切都很好,当应用程序启动时,数据从BootStrap.groovy中填充。但是,当我尝试通过web界面(通过ajax或html post)发布内容时,它会返回:
POSThttp://localhost:8080/BookApp/book/save 400(错误请求)

绝对Grails控制台中没有显示任何内容,即使所有内容都设置为log info

这就是它开始变得奇怪的地方。当我卷曲到save路径时,它返回一个201,数据很好地填充到数据库中

所以。。。我从哪里开始调试这个问题呢


编辑:如果您想查看源代码。

在BookController和save.gsp视图中创建保存操作或将其重定向到另一个操作

我知道这对任何人都没有帮助,但我最终删除了笔记本电脑上所有与Java相关的内容,从头开始。这是唯一有效的方法。

您需要在控制器中创建一个save方法,并在UrlMappings中添加一个条目,以将帖子映射到该方法。由于此处的默认映射,在执行GET via curl时将得到201:

    "/$controller/$action?/$id?(.${format})?"{
        constraints {
            // apply constraints here
        }
    } 
添加以下内容:

    "book/save" {
        controller = "book"
        action = [POST: "save"]
    }
到UrlMappings.groovy

并将其添加到控制器中:

           def save = { 
               <whatever you want here>
            }
def save={
}

我不确定我是否太迟了,因为没有任何答案被接受。我最近在用ajax调用发布数据时遇到了同样的问题。 问题是,我在请求中发送了太多数据作为请求参数,而它应该是正文的一部分

就是这样。只需将您的信息作为正文的一部分发送,并使用->
request.reader.text对grails操作进行提取即可


希望能有所帮助。

通过捕获和比较每个实例中发布的有效负载开始调试。