大家好,我用SSH开发。程序流程是接收一个id,根据这个id从t_page 表里查询出一条记录,然后把这条记录的某些字段赋给另外一个表(metadata_record)相对应的几个字段,再插入到另外一个表中。Action代码如下,
public String docu2oai() throws Exception {
  HttpServletRequest request = ServletActionContext.getRequest();
  String docu[] =request.getParameterValues("ifpub");
  for(int i=0;i<docu.length;i++)
  {
     availableItems = tpageService.queryItems(TPage.class, "id", "docuid", docu[i], "equals", 1, 0);
     if(availableItems.size()>0)
     {
      Iterator it = availableItems.iterator();
      TPage tp = new TPage(); //建立实例
      Metadata_record mdr = new Metadata_record(); //建立实例             while(it.hasNext())
      {
        tp =(TPage)it.next();
                        //赋值
        mdr.setTitle(tp.getDocutitle());
        mdr.setCreator(tp.getDocuauthors());
        mdr.setSubject(tp.getDucusubject());
        mdr.setDescription(tp.getDocuabstract());
        mdr.setPublisher(tp.getDocupublisher());
        mdr.setDate(tp.getDocupublishdate());
        mdr.setType(tp.getDocutype());
        mdr.setFormat(tp.getDocuformat());
        mdr.setLanguage(tp.getDoculanguage());
        mdr.setDocuid(tp.getDocuid());
      metadatarecordService.save(mdr);
}
    }
}
return SUCCESS;
}
错误提示出在这里       
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
java.lang.NullPointerException
meetings.ssh.generic.GenericServiceImpl.save(GenericServiceImpl.java:85)
meetings.ssh.action.TpageAction.docu2oai(TpageAction.java:368)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)368行就是metadatarecordService.save(mdr); 说找不到指针相关的SSH配置文件都配置好了,而且也import相关的service了,麻烦帮看看,分不多。谢谢了!

解决方案 »

  1.   

      tp =(TPage)it.next();
    这样的遍历是不能完成的,应为你的类型都不一样,这样肯定是错误的,所以你的统一你的数据类型
      

  2.   

    不是很明白楼上的意思。现在tp这个能够检索出结果,并且能够给mdr的字段赋值。我不是太明白怎么去统一数据类型
      

  3.   

    type Exception report
    message  
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception  
    java.lang.NullPointerException
    meetings.ssh.generic.GenericServiceImpl.save(GenericServiceImpl.java:85)
    meetings.ssh.action.www.163xyx.comTpageAction.docu2oai(TpageAction.java:368)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)有点看不懂。。
      

  4.   

    meetings.ssh.generic.GenericServiceImpl.save(GenericServiceImpl.java:85)告诉大家你85行是哪里啊?
      

  5.   

    调试一下 看看是不是操作了null对象
      

  6.   

    你测试一下保存前的mdr对象是不是一个空对象,或者测试下你的save()方法有没有问题?
      

  7.   

    调试一下看这个metadatarecordService是不是为null
      

  8.   

    100%是metadatarecordService 对象为空值。
    导致 metadatarecordService.save()方法报空指针异常。检查metadatarecordService 是否注入成功。
      

  9.   

    metadatarecordService这个对象你通过spring依赖注入没有,get/set方法,还有要在spring 的配置文件里面设置