日期:2014-05-17  浏览次数:20834 次

list结果集的存储结构
通常框架里对数据库查询的结果集,封装成list或者map的比较多,也比较通用,最近做一个页面需要我自己在后台把一个list构建出来,然后再页面上显示,个人认为对于数据库里查询结果集list似乎是个二维数组,所以在建这个list的时候也是按照二维数组去构建的,java代码如下:
public String downloadInformation() throws IOException
{
String path = this.getRequest().getSession().getServletContext().getRealPath("/")+"downloadinformation/";;
File file = new File(path);
String[] files = file.list();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String[][] s = new String[files.length][2]; 
for(int i = 0;i<files.length;i++)
{
File readfile = new File(file + "/" + files[i]);
String filePath = readfile.getPath();
String fileName = filePath.substring(filePath.lastIndexOf("\\")+1,filePath.length());
String fileDate = sdf.format(readfile.lastModified());
s[i][0] = fileName;
s[i][1] = fileDate;
}
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < s.length; i++) 
{
for (int j = 0; j < s[i].length; j++) 
{
list.add(s[i][j]);
}
}
fileList = list;
return SUCCESS;
}
测试时数组s的第二维如果不指定,list.add(s[i][j])这一句就会报错,然后我指定了第二维的长度为2,但是页面我用通常的方法却拿不到结果集,
<c:forEach items="${fileList}" var="list">
<tr>
<td style="text-align: center" height="30" nowrap="nowrap" >${list[0]}</td>
<td style="text-align: center" height="30" nowrap="nowrap" >${list[1]}</td>
</tr>
</c:forEach>
谁能给我解释下我这么封的list跟我数据库查询出来的结果集list有什么区别。小弟不胜感激。

------解决方案--------------------
你这根本就没有必要用二维数组啊,你不就是想把fileName和fileDate传至前台么,
用个 | 拼一下传至前台再split取值就可以了啊。。。

改成类似这样试试。。。

Java code

        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i < files.length; i++) {
            File readfile = new File(file + "/" + files[i]);
            String filePath = readfile.getPath();
            String fileName = filePath.substring(filePath.lastIndexOf("\\") + 1, filePath.length());
            String fileDate = sdf.format(readfile.lastModified());
            list.add(fileName + "|" + fileDate);
        }
        fileList = list;
        return SUCCESS;

------解决方案--------------------
用对象,把数据封装成对象,如下,
Java code

public class Test{
    
    private String fileName;
    private String fileDate;
    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public String getFileDate() {
        return fileDate;
    }
    public void setFileDate(String fileDate) {
        this.fileDate = fileDate;
    }
}

------解决方案--------------------
<c:forEach items="${fileList}" var="list" vars>
<tr>
<td style="text-align: center" height="30" nowrap="nowrap" >${list[0][0]}</td>
<td style="text-align: center" height="30" nowrap="nowrap" >${list[1][0]}</td>
</tr>
</c:forEach>
这样试试