如题,我从数据库查出的结果 需要显示到jsp页面上来,用的是struts2,现在查询的结果都能在控制台打印出来, jsp页面不显示,请高手指导。
Action:
public class displayAction extends ActionSupport { private List<String[]> resultlist; public List<String[]> getResultlist() {
return resultlist;
} public void setResultlist(List<String[]> resultlist) {
this.resultlist = resultlist;
} public String execute() {
resultlist = display.display();
if (null != resultlist && resultlist.size() > 0) {
System.out.println(resultlist.size());
// ServletActionContext.getRequest().setAttribute("resultlist",resultlist);
// ActionContext.getContext().put("resultlist", resultlist);
// ActionContext.getContext().getSession().put("result", result);
return "have";
} else {
return "nothave";
} }Action中调用的display()方法代码:
public class display { public static List<String[]> display(){
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/userlogin";
String user = "root";
String pwd = "xiao0923";
List<String[]> result = new LinkedList<String[]>();
try {
Class.forName(driver); Connection conn = DriverManager.getConnection(url, user, pwd);
if (!conn.isClosed())
System.out.println("Succeeded connected!");
String sql = "SELECT filename,filecontent FROM file";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String[] row = new String[2];
row[0] = rs.getString("filename");
System.out.println(row[0]);
row[1] = rs.getString("filecontent");
System.out.println(row[1]);
result.add(row);
}
rs.close();
conn.close();
return result;
} catch (ClassNotFoundException e) {
System.out.println("can't find driver!");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}}显示用画面:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>display</title>
</head>
<body>
<table>
<s:iterator value="resultlist" status="index">
<tr>
<td><s:property value="filename" /></td>
<td><s:property value="filecontent" /></td>
</tr>
</s:iterator>
</table>
</body></html>请高手指点 到底哪里错了 纠结好久了的

解决方案 »

  1.   


    <s:iterator value="resultlist" status="index">
                <tr>
                    <td><s:property value="filename" /></td>
                    <td><s:property value="filecontent" /></td>
                </tr>
            </s:iterator>
    你的这里有问题哦,你的list里不是对象比如a.filename,a.filecontent,而是String[] 系统不知道你的String[0]就是filename,String[1]就是filecontent
      

  2.   

    而且你还没有将结果设置到request.setAttribute("resultlist",resultlist);
      

  3.   

    我看了一遍你的方法、、我说的是你没有声明filename 
    比如。你有个file实体、、里面有 filename属性、、声明getset 
    然后界面、file.filename 
      

  4.   

    应该是你的属性没有声明get和set方法,导致在页面无法获得
      

  5.   

    额楼主刚刚做这种把?数据库有的字段查出来就能直接在页面显示?那就太酷了。
    1.你好像没有对应的getset方法,你是直接row[0] = rs.getString("filename");放到数组里面了,这样好像不行没这样用过
    2.你就没有把你的list结果集放进request里面页面去哪里找这些数据啊
      

  6.   

    感觉你的后台是struts1 但是前台导入的标签是struts2的标签,即使是struts2的标签,你的标签用法也不对 
    <s:iterator id="ser" status="sta" value="#request.resultlist">
    <s:property value="#ser.xxx"/>
    </s:iterator>
    xxx是你的实体类的属性
    Map request = (Map)ActionContext.getContext().get("request");
    后台request对象是这样获取的(如果是struts2)
      

  7.   

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" isELIgnored="false"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>display</title>
    </head>
    <body>
        <table>
           <c:forEach items=${resultlist} var="re">
           <td>${re.filename}</td>
           <td>${re.filecontent}</td>
           </c:forEach>
        </table>
    </body></html>
    试一下看看可以不