我正在学习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如果您想查看来源。
答案 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视图中创建保存操作或将其重定向到另一个操作