当前位置: 代码迷 >> Web前端 >> []list != null 跟 !list.isEmpty()差别
  详细解决方案

[]list != null 跟 !list.isEmpty()差别

热度:695   发布时间:2012-09-09 09:27:54.0
[]list != null 和 !list.isEmpty()差别
转载
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
             */

       ...........................
  相关解决方案