Grails发布400错误

时间:2013-12-04 13:39:58

标签: grails

我正在学习Grails工作,所以如果我看起来一无所知,请耐心等待。

我通过IntelliJ设置了多个Grails应用程序,使用默认的Hibernate设置,Tomcat服务器,都非常香草。我通过终端创建了所有域模型,控制器等。一切都运行良好,并在应用程序启动时从BootStrap.groovy填充数据。但是当我尝试通过网络界面(通过ajax或html帖子)发布内容时,它会返回:
POST http://localhost:8080/BookApp/book/save 400 (Bad Request)
绝对显示在Grails控制台中,即使所有内容都设置为日志信息。

这是它开始变得奇怪的地方。当我转到保存路由时,它返回201并且数据填充到数据库就好了。

所以......我甚至会在哪里开始调试这个问题。

编辑Here's a link to the repo如果您想查看来源。

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

    "/$controller/$action?/$id?(.${format})?"{
        constraints {
            // apply constraints here
        }
    } 

添加:

    "book/save" {
        controller = "book"
        action = [POST: "save"]
    }

到UrlMappings.groovy

并将其添加到您的控制器:

           def save = { 
               <whatever you want here>
            }

答案 2 :(得分:0)

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

就是这样。只需将您的信息作为身体的一部分发送,并使用 - &gt;提取grails动作。 request.reader.text

希望它有所帮助。

答案 3 :(得分:-1)

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