我库里的字段也少,就四个id,name,address,email.id为PK
解决方案 »
- 请高手帮忙,hibernate 1对多更新操作,外键变成为null了.....
- 用struts2验证框架,出了点问题,求助
- 在一个系统中是否可以同时建立两个数据库连接?
- Ibatis 调用 orcle 存储过程
- 刚下了最新的comcat6但是为什么装了之后不能启动服务。。错误代码如下
- 用java开发一个dota局域网游戏对战平台。
- 几个人在jbuilder上做的struts怎么合在一起?
- 路径问题
- 上传文件时为什么read()读出的总是-1 呢?详情请进
- 新浪微博的消息推送是用JMS,MQ等一些消息中间件做的吗?
- 请教高手:我的jsp 页为什么老是加载不上类文件呢?
- 关于eclipse和tomcat整合问题。
<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)
这个是你自己加的吗??
</form-beans>
中没有定义对应的 formBean,如果你的Test是作为FormBean,那么依稀记得应该extend某个Bean,作为子Bean出现。
那是我自已加的..
<form-beans >
</form-beans>
中加入相应的说明....如....
<form-beans >
<form-bean name="tests" type="com.standarsys.struts.form.Test" />
</form-beans>
这样吗...
把ArrayList换成Vector,问题就解决了,到现在也不明白是为什么。
明明在csdn看到很多人用ArrayList显示页面的,请指教楼主有耐心就试一下
这个我想是不是会有问题呢???
<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>
在你的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里的方法
你可以试试.
在你的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中文教程,你也可以结合着看看.
你说的我都加了.但是还是一样的结果显示不出来.....我上面这个程序根本没有用到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"../>
这两个在配置文件中都有说明.....
还请和位帮指正啊......
在弟在此先谢过各位......问题还没有解决..............
只能是这样的结果..
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>
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 吧?
不过我想知道你调试时设的入口是什么?
不会直接就是这个JSP的页面吧!
如果那样的出现javax.servlet.ServletException: Cannot find bean tests in scope request是绝对的。
应该以testList.do为入口吧
testlist.jsp和testlist.do是不一样的
<forward
name="success"
path="/form/testlist.jsp"
redirect="false"
contextRelative="false" />
你这样写的意思就是 在ACTION中处理成功路径为testlist.jsp,
你现在连ACTION都没有进就直接去页面了,所以会看不到数据的,
最简单的方法你在地址栏里打testlist.do
或者在建一个页面 设有超连接 到 testlist.do
你试试吧