通常框架里对数据库查询的结果集,封装成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>
这样试试