我有一个REST控制器,我正在发布JSON数据。单元测试工作正常,但是当从浏览器发布数据时,我得到一个NPE。打开错误GRAILS-11860,但不要认为他们会很快得到它,如果他们这样做(有些错误已经开放多年),所以想到这里可能会有更好的运气。
重现的步骤
git clone -b grails-bugs --single-branch https://github.com/abhijitsarkar/grails.git
cd movie-directory
grails run-app
http://localhost:8080/movie-database/movies/create
似乎与{<1}}中明显修复的bug GRAILS-10402 相似(嗯?)。通过将2.3-RC2
放入grails.cache.enabled = false
来禁用缓存仍然会从Config.groovy
引发NPE。
堆栈跟踪
ThreadPoolExecutor
答案 0 :(得分:1)
通过修复视图和控制器方法之间的命名错误来解决此错误。控制器有def createUser()
,执行了render(view: 'createNewUser')
。到现在为止还挺好。服务表格,你可以填写。但是,请查看控制器方法名称和.gsp名称与(def createUser != createNewUser.gsp)
不匹配然后,表单的提交操作转到def saveUser()
,它尝试执行render view: 'createUser'
,不存在.gsp文件,导致NPE
答案 1 :(得分:0)
我在没有数据库连接的Web应用程序中遇到了同样的问题。我已经完全删除了index_t
文件,但我的一些服务和控制器仍被标记为事务性的。当没有数据库时,没有可以处理事务的事务管理器。当我删除事务标记时,它工作正常。
请参阅此博文:Using Grails without a database
获取NPE仍然是一个非常难看的错误信息,所以我仍然认为它是Grails中的错误。