为什么总提示Cannot find bean: "UserForm" in any scope

bingxuecai 2008-05-21 11:06:52
配置文件中是这样的:
<form-bean name="UserForm" type="com.liukai.struts.form.UserForm" />
<action
name="UserForm"
path="/test"
type="com.liukai.struts.action.TestAction">
<forward name="success" path="MyTest.jsp" />
</action>

Action代码是:

public class TestAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws InstantiationException, IllegalAccessException, SQLException {
ActionErrors errors=new ActionErrors();
HttpSession session=request.getSession();
//LoginForm Loginuser=(LoginForm)session.getAttribute("Loginuser");
//String username=Loginuser.getUsername();
String username="liukai";
UserForm user=new UserForm();
ArrayList users = new ArrayList();
DB db = new DB();
String sql="select user_password,user_truename,user_useable,user_branch from "+Content.TB_USER+" where "+Content.USERNAME+"='"+username+"'";
ResultSet rs=(ResultSet) db.getRs(sql);
while(rs.next()){
user.setUsertruename(rs.getString("user_truename"));
user.setUserable(rs.getInt("user_useable"));
user.setUserbranch(rs.getString("user_branch"));
}
users.add(user);
request.setAttribute("users",users);
return mapping.findForward("success");
}
}

jsp中代码是

<logic:iterate id="users" name="UserForm">
<tr>
<td><bean:write name="user" property="usertruename"/></td>
<td><bean:write name="user" property="userable"/></td>
<td><bean:write name="user" property="userbranch"/></td>
</tr>
</logic:iterate>

为什么提示:Cannot find bean: "UserForm" in any scope
我建立了UserForm这个bean啊 而且大小写没有问题!!
请指点 !!!!!!!!

...全文
822 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
简单才是美 2010-08-06
  • 打赏
  • 举报
回复
楼主给你一个建议,要么把分给几个重点的回答,要么最后给出正确的解决方法,这样让后来有同样错误的人看得好纠结啊
zhangronghua309 2009-02-08
  • 打赏
  • 举报
回复
还有就是你的form-bean应该配置在form-beans里面,action应该配置在action-mappings里面吧
zhangronghua309 2009-02-08
  • 打赏
  • 举报
回复
如果你要转入的页面是就在WEB-INF下那么就直接在你的转入页面名字之前加上“/”,如果是转入WEB-INF下的test文件夹下的MyTest.jsp页面的话,那么在path这个参数就设置为"/test/MyTest.jsp".这样就可以了
zhangronghua309 2009-02-08
  • 打赏
  • 举报
回复
你的forward标签中的path属性写错了,必须以“/”开头,不然你这样肯定就找到错误的页面,当然也就不会找到这个form啦
lifanfly 2008-05-22
  • 打赏
  • 举报
回复
UserForm user=new UserForm();
修改为
UserForm user = (UserForm)form;
bingxuecai 2008-05-22
  • 打赏
  • 举报
回复
我按照以上各位指出的错误都改正过来了
最后还是提示原来的错误

后来我用EL表达式改写了输出语句
   <c:forEach items="aa" var="user">
<tr>
<td>${user.usertruename}</td>
<td>${user.userable}</td>
<td>${user.userbranch}</td>
<td>${user.useremail}</td>
</tr>
</c:forEach>

就没有出现问题了
我tomcat用的是6.0是不是服务器的问题呢?
siyue_qi 2008-05-22
  • 打赏
  • 举报
回复
<logic:iterate id="user" name="users">
<tr>
<td><bean:write name="user" property="usertruename"/></td>
<td><bean:write name="user" property="userable"/></td>
<td><bean:write name="user" property="userbranch"/></td>
</tr>
</logic:iterate>
siyue_qi 2008-05-22
  • 打赏
  • 举报
回复
public class TestAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws InstantiationException, IllegalAccessException, SQLException {
ActionErrors errors=new ActionErrors();
HttpSession session=request.getSession();
//LoginForm Loginuser=(LoginForm)session.getAttribute("Loginuser");
//String username=Loginuser.getUsername();
String username="liukai";
UserForm user=new UserForm();
ArrayList users = new ArrayList();
DB db = new DB();
String sql="select user_password,user_truename,user_useable,user_branch from "+Content.TB_USER+" where "+Content.USERNAME+"='"+username+"'";
ResultSet rs=(ResultSet) db.getRs(sql);
while(rs.next()){
UserForm user=new UserForm();
user.setUsertruename(rs.getString("user_truename"));
user.setUserable(rs.getInt("user_useable"));
user.setUserbranch(rs.getString("user_branch"));
users.add(user);
}
users.add(user);
request.setAttribute("users",users);
return mapping.findForward("success");
}
}
siyue_qi 2008-05-22
  • 打赏
  • 举报
回复
public class TestAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws InstantiationException, IllegalAccessException, SQLException {
ActionErrors errors=new ActionErrors();
HttpSession session=request.getSession();
//LoginForm Loginuser=(LoginForm)session.getAttribute("Loginuser");
//String username=Loginuser.getUsername();
String username="liukai";
UserForm user=new UserForm();
ArrayList users = new ArrayList();
DB db = new DB();
String sql="select user_password,user_truename,user_useable,user_branch from "+Content.TB_USER+" where "+Content.USERNAME+"='"+username+"'";
ResultSet rs=(ResultSet) db.getRs(sql);
while(rs.next()){
UserForm user=new UserForm();
user.setUsertruename(rs.getString("user_truename"));
user.setUserable(rs.getInt("user_useable"));
user.setUserbranch(rs.getString("user_branch"));
users.add(user);
}
users.add(user);
request.setAttribute("users",users);
return mapping.findForward("success");
}
}


<logic:iterate id="user" name="users">
<tr>
<td><bean:write name="user" property="usertruename"/></td>
<td><bean:write name="user" property="userable"/></td>
<td><bean:write name="user" property="userbranch"/></td>
</tr>
</logic:iterate>
xiaozhang0731 2008-05-22
  • 打赏
  • 举报
回复
你怎么这么笨啊!这么多人都说了你还不清楚吗?
我帮你再说一下
是你在action 里写的
这个request.setAttribute("users",users);东东
和jsp里的这个东东
<logic:iterate id="users" name="UserForm">
牛头不对马尾啊!
你给了张三钱却让李四去干活
你说行吗
应该这样在jsp里这样写
<logic:iterate id="user" name="users">

<tr>
<td> <bean:write name="user" property="usertruename"/> </td>
<td> <bean:write name="user" property="userable"/> </td>
<td> <bean:write name="user" property="userbranch"/> </td>
</tr>
</logic:iterate>

bingxuecai 2008-05-22
  • 打赏
  • 举报
回复
唉,烦恼啊
bingxuecai 2008-05-22
  • 打赏
  • 举报
回复
各位指点一下!!
我现在真搞不懂问题在哪了?
bingxuecai 2008-05-22
  • 打赏
  • 举报
回复
我已经按以上各位所说的该了
为什么还是提示相同的错误呢!!!!!!!!!!!!!!!
KingRat525 2008-05-22
  • 打赏
  • 举报
回复
UserForm user=new UserForm();
这个地方,我感觉应该用成UserForm user=(UserForm)form;而不是new一个UserForm对象,而是将请求中的
form转换成UserForm
siyue_qi 2008-05-21
  • 打赏
  • 举报
回复
缕缕思路先,楼主。

Action中:

ArrayList users = new ArrayList();
DB db = new DB();
String sql="select user_password,user_truename,user_useable,user_branch from "+Content.TB_USER+" where "+Content.USERNAME+"='"+username+"'";
ResultSet rs=(ResultSet) db.getRs(sql);
while(rs.next()){
user.setUsertruename(rs.getString("user_truename"));
user.setUserable(rs.getInt("user_useable"));
user.setUserbranch(rs.getString("user_branch"));
}
users.add(user);
request.setAttribute("users",users);

那么jsp中:

<logic:iterate id="user" name="users">
<tr>
<td><bean:write name="user" property="usertruename"/></td>
<td><bean:write name="user" property="userable"/></td>
<td><bean:write name="user" property="userbranch"/></td>
</tr>
</logic:iterate>



bingxuecai 2008-05-21
  • 打赏
  • 举报
回复
求解啊 !!!
bingxuecai 2008-05-21
  • 打赏
  • 举报
回复
siyue_qi ,zhuyl_wind ,天天happy
我按你们说的改了,现在还是提示相同的错误啊!!!!!!!
bingxuecai 2008-05-21
  • 打赏
  • 举报
回复
我在jsp页面中 加了一段
<html:form action="test">
..../之前jsp代码
</html:form >
现在的问题是:
Cannot create iterator for this collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException( pageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.MyJsp001_jsp._jspService(MyJsp001_jsp.java:197)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
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)

这是什么原因呢?
3q!!!
dd121011 2008-05-21
  • 打赏
  • 举报
回复
提交的时候提到action里去的 action = "Action"
dd121011 2008-05-21
  • 打赏
  • 举报
回复
配置文件的问题。。。。request.setAttribute("UserForm",users);
加载更多回复(13)

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧