通过JSP页面传递过来的关键字,查询数据库,返回查询结果给一个list,怎么样将其显示到JSP的表格中以及通过控制台输出这个list的值。
    源码如下:
    StuFindAction.java //学生信息查询模块
    
package com.cs.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.cs.dao.IUserDao;
import com.cs.model.TblStudentinfo;
import com.cs.service.IUserService;/**
 * 学生查询模块
 * 
 * @author Administrator
 */
@SuppressWarnings("serial")
public class StuFindAction extends AbstractActionSupport
{

        private TblStudentinfo user;
   
private IUserService userservice;

private IUserDao userdao;

private List<TblStudentinfo> Stuinfo;

public void setUserdao(IUserDao userdao)
{
this.userdao = userdao;
} public TblStudentinfo getUser()
{
return user;
} public void setUser(TblStudentinfo user)
{
this.user = user;
} public void setUserservice(IUserService userservice)
{
this.userservice = userservice;
}

public List<TblStudentinfo> getStuinfo() {
return Stuinfo;
}

public void setStuinfo(List<TblStudentinfo> Stuinfo) {
this.Stuinfo = Stuinfo;
}

/**
 * 通过关键字从前台获取选定的学生信息集合,返回到类型为list的Stuinfo中
 */
public String execute() throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();

String selectStu = request.getParameter("keyword");

Stuinfo = userdao.getStuInfo(selectStu);//Stuinfo通过debug可以看到其中有返回的值
                

for (int i = 0; i < Stuinfo.size(); i++)
{
request.setAttribute("Stuinfo", Stuinfo.get(i));
//System.out.println(Stuinfo.get(i));这句代码输出到控制台有误,不知怎么输出?
}
//System.out.println(Stuinfo);
return "success";
}
}
在struts.xml中配置如下: <action name="StuFindAction" class="com.cs.action.StuFindAction">
            <result name="success">stuinfofind.jsp</result> 
            <result name ="input">teainfoinput.jsp</result>                  
       </action>JSP显示页面:stuinfofind.jsp<s:iterator value="Stuinfo"></s:iterator><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >
<td><s:property value="sname" /></td>
</tr>就是显示不出来结果,各位高手给我看看到底哪里出现了问题,谢谢大家!
struts2LISTjsp

解决方案 »

  1.   

    页面上放<%  %>里,循环取吧。
      

  2.   

    1、System.out.println(Stuinfo.get(i));得到的是一个学生的信息,是TblStudentinfo类型的,不能整体输出的,应该用System.out.println(Stuinfo.get(i).get***());输出具体字段的值
    2、<s:iterator value="Stuinfo"></s:iterator>这一段,要把<tr></tr>放在iterator标记中间的,相当于放在for循环大括号里
    <s:iterator value="Stuinfo"><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >
    <td><s:property value="sname" /></td>
    </tr>
    </s:iterator>
      

  3.   

    已经将<s:iterator value="Stuinfo"></s:iterator>这一段,要把<tr></tr>放在iterator标记中间的,相当于放在for循环大括号里,可是JSP页面还是没有显示!在DEBUG中怎么看action将数据输出到了页面?
      

  4.   

    已经将<s:iterator value="Stuinfo"></s:iterator>这一段,要把<tr></tr>放在iterator标记中间的,相当于放在for循环大括号里,可是JSP页面还是没有显示!在DEBUG中怎么看action将数据输出到了页面?
      

  5.   

    <s:iterator var="user" value="Stuinfo" status="statu">
      <TR>
         <TD>${user.sname}</TD>
      </TR>
    </s:iterator>呃基本不用s:property ,都忘记怎么用了,我一般写代码的时候用上面这样的格式,不知道你TblStudentinfo里有哪些字段,随便写一个sname,你用实际的替换下
      

  6.   

    首先,你命名不规范,Stuinfo改成stuinfo吧,不要小看这大小写,命名问题有时候就是会出问题。
    request.setAttribute("Stuinfo", Stuinfo.get(i));//这里会出现替换的情况,在struts2里一般不用写的,如果要写,正确的是request.setAttribute("Stuinfo", Stuinfo),也不用写在for循环里。
    还有//System.out.println(Stuinfo.get(i));这句代码输出到控制台有误,不知怎么输出?
    输出有误,请确保拿到的值,试下stuinfo.size();看看里面有没值,正确是不会输出不了的。
      

  7.   

    Stuinfo 取到的是一个对象,不是基本类型如String的,不能只是
    Stuinfo.get(i)
    应该还要取出对象里面的属性出错的,你Stuinfo.get(i)只是返回一个对象的,要输出的取出对象里面的内容
    继续Get没用jstl el表达式?给个例子   <c:if test="${!listDatas}">
    <c:forEach items="${listDatas}" var="trealProject" > 

    <tr>
    <td align="center">${trealProject.trealProjectId}</td>
    <td height="25" align="center">${trealProject.name}</td>
    <td align="center">${trealProject.goal}</td>

    <td align="center">
    <label> 
    <input type="radio"
    name="trealProjectCheck" value="${trealProject.trealProjectId}"   /> </label>
    </td>
    </tr>
       
            </c:forEach>
    </c:if>
      

  8.   

    public class TblStudentinfo  implements java.io.Serializable {
        // Fields    
         private Integer id;
         private String sname;
         private Integer sage;
         private String ssex;
         private String scard;
         private Date admissionTime;
         private Integer phoneNo;
         private Integer guardianNo;
         private String address;
         private String snation;
         private String recordpeople;
         
      

  9.   


    我用了这个方法,还是不行,我现在怀疑ACTION里的值没有传到页面上,怎么看是否传到页面上!
    action中我使用了request.setAttribute("list", stuinfo);
    在JSP页面中我使用了
    <s:iterator value="list" var="Stu" status="sts"><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >

    <td><input name="id" type="checkbox" id="id" value="100" class="np"></td>
    <td>${Stu.id}</td>
    <td>${Stu.sname}</td>
    </tr>
    </s:iterator>
      

  10.   

    共享对象,放进JSP里遍历出来就是啦!
      

  11.   

    List<Student> list = xxxxBiz.findAllStu();
    request.setAttribute("Stuinfo", list));
    <s:iterator id="rl" value="#request.Stuinfo">
    <tr>
    <td class="TD_STYLE2">
    <s:property value="#rl.stuName"/>
    </td>
    <td class="TD_STYLE2">
    <s:property value="#rl.stuSex"/>
    </td>
    <td class="TD_STYLE2">
    <s:property value="#rl.stuAge"/>
    </td>
    </tr>
    </s:iterator>
      

  12.   

    你用的struts2是吧,struts2中有个<s:debug><s:/debug>可以查看是否将值传入值栈中
      

  13.   


    为什么我用了<s:debug><s:/debug>,提示错误,
    <%@ taglib prefix="s" uri="/struts-tags" %>也有啊!
      

  14.   


    2013-7-31 16:02:26 org.apache.catalina.core.ApplicationDispatcher invoke
    严重: Servlet.service() for servlet jsp threw exception
    ognl.NoSuchPropertyException: com.cs.action.StuFindAction.stuinfo
    at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:151)
    at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.getProperty(ObjectAccessor.java:17)
    at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2210)
    at ognl.ASTProperty.getValueBody(ASTProperty.java:114)
    at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
    at ognl.SimpleNode.getValue(SimpleNode.java:258)
    at ognl.Ognl.getValue(Ognl.java:494)
    at ognl.Ognl.getValue(Ognl.java:458)
      

  15.   

    ognl.NoSuchPropertyException: com.cs.action.StuFindAction.stuinfo
    没有stuinfo ,检查下你代码,是不是字母敲错了或者其它的
      

  16.   

    汗。
    private List<TblStudentinfo> Stuinfo;
    List集合不需要get,set.
    可以这样写  List<TblStudentinfo> Stuinfo = new ArrayList<TblStudentinfo>();
      

  17.   


    去掉debug就好了,虽然不显示,但是也不报错了
    你看我的java 代码对吗?
    private List<TblStudentinfo> stuinfo;
    public List<TblStudentinfo> getstuinfo() {
    return stuinfo;
    }

    public void setstuinfo(List<TblStudentinfo> stuinfo) {
    this.stuinfo = stuinfo;
    }
    public String execute() throws Exception
    {
    HttpServletRequest request = ServletActionContext.getRequest();

    String selectStu = request.getParameter("keyword");

    stuinfo=userdao.getStuInfo(selectStu);
    request.setAttribute("list", stuinfo);
                    return "success";
    }
      

  18.   

    List<TblStudentinfo> Stuinfo = new ArrayList<TblStudentinfo>(); 
      

  19.   


    jsp中是这样的<s:iterator id="stu" value="#request.list"><tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22" >

    <td><input name="id" type="checkbox" id="id" value="100" class="np"></td>
    <td><s:property value="#stu.id"/></td>
    <td><s:property value="#stu.sname"/></td>
    </tr>
    </s:iterator>
      

  20.   

    jsp页面没发现问题,把list改下吧
      

  21.   

    List<TblStudentinfo> stuinfo = new ArrayList<TblStudentinfo>();
    stuinfo=userdao.getStuInfo(selectStu);
    request.setAttribute("stuinfo", stuinfo);stuinfo中可以获得数据库返回的值,怎么就传不到jsp页面中去呢!
      

  22.   

    把<s:debug></s:debug>放到<table>外面 <body>最底下试试看
      

  23.   


    org.apache.jasper.JasperException: An exception occurred processing JSP page /stuinfofind.jsp at line 120117:   </tr>
    118: </table>
    119: </form>
    120: <s:debug></s:debug>
    121: </body>
    122: </html>
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154)
    org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
    com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
      

  24.   

    不应该啊
    <s:debug></s:debug>只是用来查看值栈的,为什么会报错呢
      

  25.   


    控制台输出的是:严重: Servlet.service() for servlet jsp threw exception
    ognl.NoSuchPropertyException: com.cs.action.StuFindAction.stuinfo
      

  26.   

    你把list放入了request中 那么你在前台在request中取出来遍历就行了
      

  27.   


    控制台输出的是:严重: Servlet.service() for servlet jsp threw exception
    ognl.NoSuchPropertyException: com.cs.action.StuFindAction.stuinfo这是不是你在页面其他的其他的地方写了stuinfo 这个list呢
      

  28.   


    public List<Gaokaochengji> findAll(){
    Session session = HibernateSessionFactory.getSession();
    List<Gaokaochengji> list = session.createQuery("from Gaokaochengji").list();
    return list;
    }
      

  29.   

    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'show.jsp' starting page</title>
        
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->  </head>
      
      <body>
        <table border="1">
         <tr>
         <td colspan="15" align="center">
         <h1>高考成绩信息一览表</h1>
         </td>
         </tr>
         <tr>
         <td>序号:</td>
         <td>姓名:</td>
         <td>学号:</td>
         <td>班级:</td>
         <td>语文:</td>
         <td>数学:</td>
         <td>外语:</td>
         <td>是否体检合格:</td>
         <td>是否特长生:</td>
         </tr>
        <s:iterator id="gaokao" value="#request.list">
         <tr>
         <td><s:property value="#gaokao.sid"/> </td>
         <td><s:property value="#gaokao.name"/> </td>
         <td><s:property value="#gaokao.xuehao"/></td>
         <td><s:property value="#gaokao.class_"/></td>
         <td><s:property value="#gaokao.yuwen"/></td>
         <td><s:property value="#gaokao.shuxue"/></td>
         <td><s:property value="#gaokao.waiyu"/></td>
         <td><s:property value="#gaokao.tijian"/></td>
         <td><s:property value="#gaokao.techang"/></td>
         </tr>
         </s:iterator>
        </table>
        <s:debug></s:debug>
      </body>
    </html>
      

  30.   

    public class GaoKaoChengJiAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{ private GaoKaoChengJiDao gkDao = new GaoKaoChengJiDao();
    protected HttpServletRequest request;
    protected HttpServletResponse response;
    protected HttpSession session;

    public HttpServletRequest getRequest() {
    return request;
    } public void setRequest(HttpServletRequest request) {
    this.request = request;
    } public HttpServletResponse getResponse() {
    return response;
    } public void setResponse(HttpServletResponse response) {
    this.response = response;
    } public HttpSession getSession() {
    return session;
    } public void setSession(HttpSession session) {
    this.session = session;
    } /**
     * 查询显示所有
     */
    public String findAll(){
    List<Gaokaochengji> list = gkDao.findAll();
    System.out.println(list.size());
    request.setAttribute("list", list);
    return "show";
    } public void setServletResponse(HttpServletResponse response) {
    this.response = response;

    } public void setServletRequest(HttpServletRequest request) {
    this.request = request;

    }
      

  31.   

    终于找到问题在哪了,<s:property value="#stu[0]"/>,显示的时候用下标就没有问题了,用stu.id就错了!呵呵,虽然不知道为什么,但是总算解决了!谢谢各位,给我了很多的帮助,分虽然只能给一个人,但是衷心的感谢大家!结贴了!