【发布时间】:2015-02-22 16:21:49
【问题描述】:
我在服务类中有一个必须从控制器调用的方法。控制器和服务类代码如下。
文件夹grails-app/services,文件FileFactoryService.groovy
package edu.rev.document
import grails.transaction.Transactional
Class FileFactoryService{
Document document = new Document() // Domain object
def build(byte[] fileArray){
String str = new String(fileArray, "UTF-8") // UTF encoding as invoice may contain negative values
String[] lines = str.split("\\r?\\n")
document.version = lines[0].substring(0,1)
document.name = lines[1].substring(0,25)
}
return document.properties.collect()
}
控制器代码:文件夹:grails-app/controllers,文件:FileController.groovy
package edu.rev.document
Class FileController{
def fileFactoryService
def save(){
def file = request.getFile('file')
if(file.empty) {
flash.message = "File cannot be empty"
} else {
def myList = fileService.build(file.getBytes())
}
}
抛出的错误是
NullPointer exception when processing [POST]/../save
Cannot invoke method build() on NULL object
你能指出我可能犯的错误吗?如果您需要任何其他信息,请告诉我
编辑:这是代码。请注意,从服务中取出并在控制器本身中实现的相同逻辑可以正常工作。还有一件事,当我使用“。”时。服务内的操作员(比如document.),它不会显示任何自动完成选项,如document.name。
【问题讨论】:
-
您确定将您的
FileService.groovy文件放在services/..文件夹中吗? -
是的,我做到了。我在应用程序中使用 GGTS,所以这些事情是自动完成的。但是,是的,我确实验证了。
-
我认为您在问题中显示的内容没有任何问题...
-
我认为您需要向我们展示更多内容...您如何使用控制器?您是否自己实例化它(因为那是错误的,并且会导致您看到的错误)?这是作为 Web 请求、单元测试或其他的一部分发生的吗?
-
您的代码看起来不像是有效的 Groovy 代码(例如
Class等),并且异常看起来也不同。我相信您需要向我们展示原始代码才能找到问题
标签: grails groovy nullpointerexception