我库里的字段也少,就四个id,name,address,email.id为PK

解决方案 »

  1.   

    现在是显示不出来...但是这一testlist.jsp中的
    <jsp:useBean id="tests" scope="request" class="java.util.ArrayList"/>
    这一句去了..就会报错..
    javax.servlet.ServletException: Cannot find bean tests in scope request
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.form.testlist_jsp._jspService(testlist_jsp.java:199)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    com.standarsys.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:50)
      

  2.   

    <jsp:useBean id="tests" scope="request" class="java.util.ArrayList"/>
    这个是你自己加的吗??
      

  3.   

    <form-beans >
    </form-beans>
    中没有定义对应的 formBean,如果你的Test是作为FormBean,那么依稀记得应该extend某个Bean,作为子Bean出现。
      

  4.   

    <jsp:useBean id="tests" scope="request" class="java.util.ArrayList"/>
    那是我自已加的..
      

  5.   

    我的Test.java.不是一个FormBean.他只是一个简单的Bean但作用也是和FormBean一样的.....
      

  6.   

    那你就不要用struts的标签库,用普通的jsp页面做显示就行!~如果你要用struts的标签库就就改成wuweifanhao(无为番号)说的那样;
      

  7.   

    作为子Bean出现是什么意思呢......是不是在
    <form-beans >
    </form-beans>
    中加入相应的说明....如....
    <form-beans >
    <form-bean name="tests" type="com.standarsys.struts.form.Test" />
    </form-beans>
    这样吗...
      

  8.   

    前段时间我作struts时候也出现类似的问题。
    把ArrayList换成Vector,问题就解决了,到现在也不明白是为什么。
    明明在csdn看到很多人用ArrayList显示页面的,请指教楼主有耐心就试一下
      

  9.   

    我试了...但是还是一样的结果不行.....和原来的没有两样..请问...除改ArrayList为Vector外还要改什么呢.....在我的程序上....
      

  10.   

    听说ArrayList和Vector一个是有顺序的!一个不是那么的要求!!
    这个我想是不是会有问题呢???
      

  11.   

    我这有个很详细的struts例子;写得很好,你给个邮箱我给你传过去!~
      

  12.   

    呵呵.谢谢......这是<<精通Struts 基于MVC的java web 设计与开发>>书上的第二章吧....还没有时间看过呢...谢谢指点....可是我上面的问题还是不能解决啊.......
      

  13.   

    <logic:present name="tests" scope="request">
    <logic:iterate id="test" name="tests" scope="request">
    <tr align="left">
    <td>
                <bean:write name="test" property="id" />
      </td>
      <td>
                <bean:write name="test" property="name" />
      </td>
      <td>
                <bean:write name="test" property="address" />
      </td>
      <td>
                <bean:write name="test" property="email" />
      </td>
    </tr>
          </logic:iterate>
    </logic:present>
      

  14.   

    你先好好测试一下数据库的返回结果,arrayList里面是否有记录?然后再定位到struts的显示问题
      

  15.   

    现在的问题是....在页面打开时根本就没有调用到TestListAction.java这个文件啊......我刚学Struts也不知道要如何才会调用到这个文件...所以要测也测不到啊....
      

  16.   

    粗略得看了一下,太长了,没啥耐心 #_#
    在你的struts-config.xml中<form-beans>标签对中没有与TestListAction相对应的ActionForm
    所以TestListAction不能使用Test中的方法
    其次你的Test应该继承ActionForm类
    TestListAction是由ActionServlet自动调用的,不用关心
    如果想知道程序是否自动调用了TestListAction类,可以在TestListAction里边加上System.out.printl("start");  如果调用了,那么在你的服务器里会显示start字符串
    还要注意的是Struts版本不一样Action里的方法也不一样
    如果没记错的话Struts1.0版本好像是自动调用Action里的perform方法
    Struts1.1以后的版本是自动调用Action里的execute方法在你得jsp文件开头已经使用import导入了java.util.*
    而且你要的级别是request,所以可以不使用jsp标签,
    可以将<jsp:useBean id="tests" scope="request" class="java.util.ArrayList"/>改成
    <% ArrayList tests = new ArrayList();%>
    我没有使用过<bean:write>标签,我一直使用<html:text>标签对用Form里的方法
    你可以试试.
      

  17.   

    忍耐不住,又看了一眼
    在你的TestListAction中最后一句return mapping.findForward(target);
    target没有在你的struts-config.xml中有相应的配置,就算有也应该加上引号
    return mapping.findForward("target");
    请注意你的xml文件中这两个配置
    <forward name="success"../>
    <forward name="add"../>
    如果想转到相应的url应该将return mapping.findForward()一句改成
    return mapping.findForward("success");或者
    return mapping.findForward("add");
    还有这一句type="com.standarsys.struts.action.TestListAction"
    但是我看你的TestListAction得源码并没有
    package com.standarsys.struts.action.TestListAction这一句。
    说实话错误有些偏多 *_*,你再看看struts得小教程好吗
    另外网上还有一个struts得doc中文教程,你也可以结合着看看.
      

  18.   

    <logic:iterate id="test" name="tests" scope="request">加入 type 属性看一下..  也就是类的路径..<logic:iterate id="test" name="tests" scope="request" type="test">
      

  19.   

    很高兴这个老兄说了这么多.........
    你说的我都加了.但是还是一样的结果显示不出来.....我上面这个程序根本没有用到ActionForm.因为在页面里可能没有这个必要了.我认为..因为我用Bean就是Test.java来替代了.而return mapping.findForward(target);是正确的....因为return mapping.findForward("success");或者
    return mapping.findForward("add");
    都是通过if来控制的.....作用是看我调用的是哪一个.
    package com.standarsys.struts.action.TestListAction只是说明一个包.所以在这里就没有显示出来.....
    <forward name="success"../>
    <forward name="add"../>
    这两个在配置文件中都有说明.....
    还请和位帮指正啊......
    在弟在此先谢过各位......问题还没有解决..............
      

  20.   

    页面改成了如下这样....但是还是不能显示出数据库中的空容.
    只能是这样的结果..
    id           name             address            email --------------------------------------------------------------------------------
     <%@ page language="java" import="java.util.*" %> 
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><html:html>
      <head>
        <title>test list</title>
      </head>
      <body>
        <html:errors />    <table width="650"
          border="0" cellspacing="0" cellpadding="0">
          <tr align="left">
           <th>id</th>
            <th>name</th>
            <th>address</th>
            <th>email</th>
          </tr>
          <!-- iterate over the results of the query -->
    <logic:present name="tests"  scope="request">
          <logic:iterate id="test" name="tests" type="com.standarsys.struts.form.Test" scope="request">
    <tr align="left">
    <td>
                <bean:write name="test" property="id" />
      </td>
      <td>
                <bean:write name="test" property="name" />
      </td>
      <td>
                <bean:write name="test" property="address" />
      </td>
      <td>
                <bean:write name="test" property="email" />
      </td>
    </tr>
          </logic:iterate>
       </logic:present>
          
           <tr>
            <td colspan="7">
      <hr>
    </td>
          </tr>
        </table>
      </body>
    </html:html>
      

  21.   

    struts要求分页显示的数据放入ArrayList中的数据类型为ActionForm 类型,而楼主放入的Test test =new Test();
    test.setId(new Integer(rs.getInt("id")));
    test.setName(rs.getString("name"));
    test.setAddress(rs.getString("address"));
    test.setEmail(rs.getString("email"));
    tests.add(test);
    其中的tests不是ACTIONFORM类型的,请把TEST类应该extends ActionForm 吧?
      

  22.   

    你这个程序的确是不需要的FROMBEAN的。
    不过我想知道你调试时设的入口是什么?
    不会直接就是这个JSP的页面吧!
    如果那样的出现javax.servlet.ServletException: Cannot find bean tests in scope request是绝对的。
    应该以testList.do为入口吧
      

  23.   

    但是如何设呢...在struts-config.xml里还是在web.xml里面呢...
      

  24.   

    问题就出在这里了
    testlist.jsp和testlist.do是不一样的
    <forward
    name="success"
    path="/form/testlist.jsp"
    redirect="false"
    contextRelative="false" />
    你这样写的意思就是 在ACTION中处理成功路径为testlist.jsp,
    你现在连ACTION都没有进就直接去页面了,所以会看不到数据的,
    最简单的方法你在地址栏里打testlist.do
    或者在建一个页面 设有超连接 到 testlist.do
    你试试吧