转载
http://hi.baidu.com/oritenson/blog/item/63896c3e9ad981fc3d6d97bc.html
在我们进行遍历展示数据的时候经常会把数据封装到List<your JavaBean>中,然后传递到页面(JSP)端进行显示,这时候我们经常在Action里声明一个Null的List<your JavaBean>,然后调用处理方法,把这个Null的List赋值,赋值之后肯定要判断是否成功赋值,代码如下:
List<Employee> list = null;
list = EmployeeService.getInstance().getEmployees();
if( list == null){
/**
* failure
*/
errors.add("skimEmployee.failure", new ActionMessage("skimEmployee.failure"));
}else{
/**
* success
*/
result = "success";
request.getSession().setAttribute("listEmployee", list);
}
上面就是我经常写的代码,今天就出问题了,在实际处理端,我们同时也会声明一个List<your JavaBean>,并且用ArrayList<your JavaBean>初始化,然后把RS生成的对象放到List中,最后传递给那面的Action。代码如下:
List<CommonTask> list = null;
Connection conn = DBMysql.getConnection();
String sql = "select * from task ";
Statement stmt = DBMysql.getStatement(conn);
ResultSet rs = DBMysql.getResultSet(stmt, sql);
list = new ArrayList<CommonTask>();
CommonTask ct = null;
try {
while(rs.next()){
ct = new CommonTask();
.....................
由于我们new了List,所以当RS取不到值的时候List实际就不为NULL了,List实际值为 [ ] 。所以action端的list != null,会永远执行。
正确写法;
if( list.isEmpty()){
/**
* failure
*/
errors.add("skimEmployee.failure", new ActionMessage("skimEmployee.failure"));
}else{
/**
* success
*/
...........................