javax.servlet.jsp.JspException: Cannot find bean users in any scope,错误始终改不了。不清楚导致此错误的原因是不是jsp版本问题。
。
addArticle.jsp<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for AddArticleForm form</title>
</head>
<body>
<html:form action="/addArticle">
userid :
<html:select property="userid">
<html:optionsCollection property="users"
value="id"
label="username" />
</html:select>
<html:errors property="userid"/><br/>
content : <html:textarea property="content"/><html:errors property="content"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
addArticleForm.java/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.form;import java.util.List;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;import com.yourcompany.Userinfo;
import com.yourcompany.UserinfoDAO;/**
* MyEclipse Struts
* Creation date: 11-06-2008
*
* XDoclet definition:
* @struts.form name="addArticleForm"
*/
public class AddArticleForm extends ActionForm {
/*
* Generated fields
*/ /** userid property */
private int userid; /** content property */
private String content; //返回所有用户信息的列表
public List getUsers() {
return new UserinfoDAO().findAll();
}
/*
* Generated Methods
*/ /**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
if (content == null || content.length() == 0) {
content = "未输入内容!";
}
return null;
} /**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
} /**
* Returns the userid.
* @return int
*/
public int getUserid() {
return userid;
} /**
* Set the userid.
* @param userid The userid to set
*/
public void setUserid(int userid) {
this.userid = userid;
} /**
* Returns the content.
* @return String
*/
public String getContent() {
return content;
} /**
* Set the content.
* @param content The content to set
*/
public void setContent(String content) {
this.content = content;
}
}
addArticalAction.java/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import com.yourcompany.Article;
import com.yourcompany.ArticleDAO;
import com.yourcompany.Userinfo;
import com.yourcompany.UserinfoDAO;
import com.yourcompany.struts.form.AddArticleForm;/**
* MyEclipse Struts
* Creation date: 11-06-2008
*
* XDoclet definition:
* @struts.action path="/addArticle" name="addArticleForm" input="/addArticle.jsp" scope="request" validate="true"
*/
public class AddArticleAction extends Action {
/*
* Generated Methods
*/ /**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//取出提交的表单数据
AddArticleForm addArticleForm = (AddArticleForm) form;
//创建用户
Userinfo userinfo = new UserinfoDAO().findById(addArticleForm.getUserid());
//创建文章
Article article = new Article();
article.setUserinfo(userinfo);
article.setUserid(addArticleForm.getUserid());
article.setContent(addArticleForm.getContent());
//保存
new ArticleDAO().save(article);
//转发
return mapping.findForward("success");
}
}
发生如下错误:
org.apache.jasper.JasperException: An exception occurred processing JSP page /addArticle.jsp at line 1310: <html:form action="/addArticle">
11: userid :
12: <html:select property="userid">
13: <html:optionsCollection name="users"
14: value="id"
15: label="username" />
16: </html:select>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
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)
com.yourcompany.CharFilter.doFilter(CharFilter.java:21)
root cause javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean users in any scope
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.addArticle_jsp._jspService(addArticle_jsp.java:96)
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)
com.yourcompany.CharFilter.doFilter(CharFilter.java:21)
root cause javax.servlet.jsp.JspException: Cannot find bean users in any scope
org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:938)
org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:219)
org.apache.jsp.addArticle_jsp._jspx_meth_html_005foptionsCollection_005f0(addArticle_jsp.java:206)
org.apache.jsp.addArticle_jsp._jspx_meth_html_005fselect_005f0(addArticle_jsp.java:172)
org.apache.jsp.addArticle_jsp._jspx_meth_html_005fform_005f0(addArticle_jsp.java:119)
org.apache.jsp.addArticle_jsp._jspService(addArticle_jsp.java:85)
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)
com.yourcompany.CharFilter.doFilter(CharFilter.java:21)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
。
addArticle.jsp<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for AddArticleForm form</title>
</head>
<body>
<html:form action="/addArticle">
userid :
<html:select property="userid">
<html:optionsCollection property="users"
value="id"
label="username" />
</html:select>
<html:errors property="userid"/><br/>
content : <html:textarea property="content"/><html:errors property="content"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
addArticleForm.java/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.form;import java.util.List;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;import com.yourcompany.Userinfo;
import com.yourcompany.UserinfoDAO;/**
* MyEclipse Struts
* Creation date: 11-06-2008
*
* XDoclet definition:
* @struts.form name="addArticleForm"
*/
public class AddArticleForm extends ActionForm {
/*
* Generated fields
*/ /** userid property */
private int userid; /** content property */
private String content; //返回所有用户信息的列表
public List getUsers() {
return new UserinfoDAO().findAll();
}
/*
* Generated Methods
*/ /**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
if (content == null || content.length() == 0) {
content = "未输入内容!";
}
return null;
} /**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
} /**
* Returns the userid.
* @return int
*/
public int getUserid() {
return userid;
} /**
* Set the userid.
* @param userid The userid to set
*/
public void setUserid(int userid) {
this.userid = userid;
} /**
* Returns the content.
* @return String
*/
public String getContent() {
return content;
} /**
* Set the content.
* @param content The content to set
*/
public void setContent(String content) {
this.content = content;
}
}
addArticalAction.java/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import com.yourcompany.Article;
import com.yourcompany.ArticleDAO;
import com.yourcompany.Userinfo;
import com.yourcompany.UserinfoDAO;
import com.yourcompany.struts.form.AddArticleForm;/**
* MyEclipse Struts
* Creation date: 11-06-2008
*
* XDoclet definition:
* @struts.action path="/addArticle" name="addArticleForm" input="/addArticle.jsp" scope="request" validate="true"
*/
public class AddArticleAction extends Action {
/*
* Generated Methods
*/ /**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//取出提交的表单数据
AddArticleForm addArticleForm = (AddArticleForm) form;
//创建用户
Userinfo userinfo = new UserinfoDAO().findById(addArticleForm.getUserid());
//创建文章
Article article = new Article();
article.setUserinfo(userinfo);
article.setUserid(addArticleForm.getUserid());
article.setContent(addArticleForm.getContent());
//保存
new ArticleDAO().save(article);
//转发
return mapping.findForward("success");
}
}
发生如下错误:
org.apache.jasper.JasperException: An exception occurred processing JSP page /addArticle.jsp at line 1310: <html:form action="/addArticle">
11: userid :
12: <html:select property="userid">
13: <html:optionsCollection name="users"
14: value="id"
15: label="username" />
16: </html:select>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
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)
com.yourcompany.CharFilter.doFilter(CharFilter.java:21)
root cause javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean users in any scope
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.addArticle_jsp._jspService(addArticle_jsp.java:96)
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)
com.yourcompany.CharFilter.doFilter(CharFilter.java:21)
root cause javax.servlet.jsp.JspException: Cannot find bean users in any scope
org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:938)
org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:219)
org.apache.jsp.addArticle_jsp._jspx_meth_html_005foptionsCollection_005f0(addArticle_jsp.java:206)
org.apache.jsp.addArticle_jsp._jspx_meth_html_005fselect_005f0(addArticle_jsp.java:172)
org.apache.jsp.addArticle_jsp._jspx_meth_html_005fform_005f0(addArticle_jsp.java:119)
org.apache.jsp.addArticle_jsp._jspService(addArticle_jsp.java:85)
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)
com.yourcompany.CharFilter.doFilter(CharFilter.java:21)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
value="id"
label="username" />怎么和你报错的代码不一样?html:optionsCollection 好像需要 name 的,而且不能为null
<html:optionsCollection property="users"
name="AddArticleForm"
value="id"
label="username" />
</html:select>
你既然将property属性定义了"users"
应该在AddArticleForm.java文件中添加私有成员
private List<LabelValueBean> users = null;
并完成它的get()set()方法
public List<LabelValueBean> getUserList() {
return users;
} public void setUserList(List<LabelValueBean> users) {
this.users = users;
}
public List <LabelValueBean> getUsers() {
return users;
} public void setUsers(List <LabelValueBean> users) {
this.users = users;
}LZ对select标签的属性以及实现过程还是不太了解啊对于select标签显示的内容用property标示,value和label表示的是你所显示内容的属性。理解一下吧希望对你有帮助
那么说明 users 对象可能为null
需要检查原因,估计可能是 hibernate的映射文件写得不正确,或者实体类(vo)的定义不正确. 检查:
1. 数据库的表是否一致?
2. hbm.xml映射文件是否一致?
3. 实体类是否一致?