小弟新手,上次问了个字符串问题,因为JAVA的课程是下学期才学的。这次还是关于那个简单网络硬盘的程序:简单的说就是从JSP页面里得到一个关于地址的字符串,然后在Service层把它分割成dir和fileName,再分别赋值给一个file对象,这个对象里有两个字段就是dir和fileName,在Dao层里把这个file对象存入数据库中。
但是总是得到如下错误:
description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
root cause java.lang.NullPointerException
org.nbu.lab619.service.impl.FileServiceImpl.save(FileServiceImpl.java:21)
org.nbu.lab619.action.webdisk.UploadAction.saveFileInfo(UploadAction.java:52)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)...........略....上网查了下说是操作了什么空的对象。下面是我的Service代码:
public class FileServiceImpl implements FileService{
private FileDao fileDao;
private File file; public File getFile() {
return file;
} public void setFile(File file) {
this.file = file;
} public FileDao getFileDao() {
return fileDao;
} public void setFileDao(FileDao fileDao) {
this.fileDao = fileDao;
}

public void save(String path){
int index = path.lastIndexOf('\\');
String dir = path.substring(0, index);
String fileName = path.substring(index+1);
file.setDir(dir);
file.setFileName(fileName);
fileDao.saveInfo(file);
}DAO层代码:
public void saveInfo(File file){
getHibernateTemplate().saveOrUpdate(file);
}可我在save函数中不是已经给file的两个字段赋值了吗?怎么会是空的呢?
总之不明白啦,各位大侠请赐教啊。

解决方案 »

  1.   

    在赋值的时候 本身传进来的对象就是null,所以设了把传进来的null对象赋给了你本地对象。所以本地对象在被方法调用时就是null,所以报错。
      

  2.   

    21行是这句么?应该是fileDao.saveInfo(file);
    fileDao是不是没有被注入?
      

  3.   

    我也知道肯定是对象里有null,但是我就是想知道有了下面的代码
    file.setDir(dir);
    file.setFileName(fileName);
    这么还是null呢?
      

  4.   

    fileDao不是在Service的第一行就声明了吗?fileDao是FileDao类型的一个对象
      

  5.   

    好象是你File对象为空,对象需要实例化吧