错误提示如下:
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)
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)
解决方案 »
- hibernate是如何知道已更新数据的
- 用Ext JS(或Java) 怎样把后台的查询结果导入到Excel表中?
- @Version怎么报错?
- 关于<tiles:insert /> 的用法问题,欢迎大家来讨论一下
- 求基本电子书,有的请发给我,谢谢!
- 对于Web Service如何入门?
- 如何写一个blog首页?roller weblogger相关
- 50分求Middlegen-Hibernate-r5.zip
- 大家帮我看看tomcat报的异常是什么意思?急!
- jboss启动报错……
- 在jdbc 中有没有像hibernate 中的Query 通过参数名来设置参数
- 准备开发一个大型仪器的监控软件,用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;
}
}
cell = aRow.getCell((short) 2); //密码 ----》改为(short)3
ret.setPassword(caseType(cell));
----------------我己经将参数凭闭了我是用定值来处理的
如:
public List readExcel() throws Exception
{ System.out .println("#####################");
List list = new ArrayList();
File file = new File("D:/aaa.xls");
if (!file.exists())我应该如何改
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参数时就出异常了
跟一下这段代码看看
System.out .println("#####################");
为什么
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)