错误提示如下:
description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.IllegalArgumentException: Resources cannot be null.
org.apache.commons.validator.Validator.<init>(Validator.java:188)
org.apache.struts.validator.Resources.initValidator(Resources.java:475)
org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:104)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:927)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.dsweb.filter.EnCodeFilter.doFilter(EnCodeFilter.java:54)

解决方案 »

  1.   

    uploadkehuxinxi.java可能太长了
    修改如下:uploadkehuxinxi.java
    --------------------
    package com.dsweb.action;import com.dsweb.form.RecExcelType;
    import com.dsweb.util.DBUtil;import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;import java.io.File;
    import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import java.text.DecimalFormat;public class uploadkehuxinxi
    {
        private String resType;    public uploadkehuxinxi(String resType)
        {
            this.resType = resType;
        }    public void renameFile()
        {    }     //String filePath
        public List readExcel() throws Exception
        {   System.out .println("#####################");
            List list = new ArrayList();
            File file = new File("D:/aaa.xls");
            if (!file.exists())
            {
                return null;
            }
            FileInputStream is = null;
            try
            {
                is = new FileInputStream(file);
                HSSFWorkbook workbook = new HSSFWorkbook(is);
                HSSFSheet sheet = workbook.getSheetAt(0);
                HSSFCell cell = null;
                int rowCount = sheet.getPhysicalNumberOfRows();
                for (int i = 1; i < rowCount; i++)
                {
                    RecExcelType ret = new RecExcelType();
                    HSSFRow aRow = sheet.getRow(i);
                    //ret.setCode(resType);//资源类型;                cell = aRow.getCell((short) 0);
                    ret.setCode(caseType(cell));             //管理码                cell = aRow.getCell((short) 1);
                    ret.setIdentifier(caseType(cell));       //纳税识别码                cell = aRow.getCell((short) 2);        //单位名称
                    ret.setCompany_name(caseType(cell));                 cell = aRow.getCell((short) 2);        //密码
                    ret.setPassword(caseType(cell));                list.add(ret);
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                if (is != null)
                {
                    is.close();
                }
            }
            return list;
        }    public void storeResource(List list,String cp_id,String cp_emp_id) throws Exception
        {
            if (list == null)
            {
                return;
            }
            else
            {
                Connection conn = DBUtil.getCurrentConnection();
                PreparedStatement ps = null;            PreparedStatement psfolder = null;
                String sql = "insert into company_extend(code,idendifier," +
                        " password,company_name,tel1,mobile1,tel2,mobile2,open_sms1,open_sms2," +
                        " valid_date,create_time,address,status,postcode,last_mod_time,update_status" +                    " ) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";            boolean isFolder = false;
                try
                {
                    ps = conn.prepareStatement(sql);
     
                    for (int i = 0; i < list.size(); i++)
                    {
                        RecExcelType RecExcelType1 = (RecExcelType) list.get(i);
                                 
                        ps.setString(1, RecExcelType1.getCode());
                        ps.setString(2, RecExcelType1.getIdentifier());
                        ps.setString(3, RecExcelType1.getCompany_name());
                        ps.setString(4, RecExcelType1.getPassword());
                                           ps.addBatch();
                    }
                    ps.executeBatch();
                    if (isFolder)
                    {
                        psfolder.executeBatch();
                    }
                    conn.commit();
                } catch (Exception e)
                {
                    try
                    {
                        conn.rollback();
                    } catch (SQLException e1)
                    {
                        e1.printStackTrace();
                    }
                }
                finally
                {
                    if (psfolder != null)
                    {
                        try
                        {
                            psfolder.close();
                        } catch (SQLException e)
                        {
                            e.printStackTrace();
                        }
                    }
                    if (ps != null)
                    {
                        try
                        {
                            ps.close();
                        } catch (SQLException e)
                        {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
       public static String caseType(HSSFCell cell)
        {
            String str = "";
            if (cell == null)
            {
                return str;
            }
            //要根据单元格的类型分别做处理,否则格式化过的内容可能会不正确
            if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
            {
                DecimalFormat df = new DecimalFormat("0.00");
                String cstr = df.format(cell.getNumericCellValue());
                String str2 = "";
                if (cstr.indexOf(".") != -1)
                {
                    str2 = cstr.substring(0, cstr.indexOf("."));
                }
                double tt = Double.parseDouble(str2);
                double d = cell.getNumericCellValue();
                if (tt == d)
                {
                    str = str2;
                }
                else
                {
                    str = cstr;
                }
            }
            else if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK)
            {
                str = "";
            }
            else
            {
                str = cell.getStringCellValue();
            }        return str;
        }
    }
      

  2.   

    java.lang.IllegalArgumentException: Resources cannot be null.传递的参数中有为NULL的对象. 调用前应检测一下相关参数的值.
      

  3.   

    纠正一个小错误
    cell = aRow.getCell((short) 2);        //密码   ----》改为(short)3
    ret.setPassword(caseType(cell));
      

  4.   

    theforever(碧海情天) 
    ----------------我己经将参数凭闭了我是用定值来处理的
    如:
    public List readExcel() throws Exception
        {   System.out .println("#####################");
            List list = new ArrayList();
            File file = new File("D:/aaa.xls");
            if (!file.exists())我应该如何改
      

  5.   

    ps = conn.prepareStatement(sql);
     
    for (int i = 0; i < list.size(); i++)
    {
       RecExcelType RecExcelType1 = (RecExcelType) list.get(i);
                                 
       ps.setString(1, RecExcelType1.getCode());
       ps.setString(2, RecExcelType1.getIdentifier());
       ps.setString(3, RecExcelType1.getCompany_name());
       ps.setString(4, RecExcelType1.getPassword());   ps.addBatch();
    }|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    估计是有的格子里的值是NULL
    ps设置sql参数时就出异常了
    跟一下这段代码看看
      

  6.   

    关键是下面的都没有出来不可能往下走的 
    System.out .println("#####################");
      

  7.   

    关键是我根本没有进入我的uploadkehuxinxi.java
    为什么
      

  8.   

    现在己进去了,但到了
     cell = aRow.getCell((short) 0);
     ret.setCode(caseType(cell));             //管理码
    tomcat就出错了提示:
    java.lang.NullPointerException
            at com.dsweb.action.uploadkehuxinxi.readExcel(uploadkehuxinxi.java:59)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:324)
            at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchActio
    n.java:274)
            at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:
    194)
            at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
    tProcessor.java:419)
            at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
    va:224)
            at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
    6)
            at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:237)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:157)
            at com.dsweb.filter.EnCodeFilter.doFilter(EnCodeFilter.java:54)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:186)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:157)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
    alve.java:214)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:104)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:520)
            at org.apache.catalina.core.StandardContextValve.invokeInternal(Standard
    ContextValve.java:198)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
    alve.java:152)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:104)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:520)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
    ava:137)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:104)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
    ava:118)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:102)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:520)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
    ve.java:109)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:104)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:520)
            at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:16
    0)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
    :799)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
    ssConnection(Http11Protocol.java:705)
            at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
    :577)
            at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
    ool.java:683)
            at java.lang.Thread.run(Thread.java:534)