2008-11-06 99 views
13

我得到这个误差范围内未发现:javax.servlet.ServletException:豆[名]范围

javax.servlet.ServletException: bean not found within scope 

本页面顶部上。

<jsp:useBean id="bean" type="com.example.Bean" scope="request" /> 

该类存在于类路径中,它在今天上午工作,并且我没有得到在范围内找不到的东西。

这是如何造成的,我该如何解决?

回答

28

您需要class属性,而不是type属性。

以下:

<jsp:useBean id="bean" type="com.example.Bean" scope="request" /> 

确实基本上幕后如下:

Bean bean = (Bean) pageContext.getAttribute("bean", PageContext.REQUEST_SCOPE); 

if (bean == null) { 
    throw new ServletException("bean not found within scope"); 
} 

// Use bean ... 

虽然以下:

<jsp:useBean id="bean" class="com.example.Bean" scope="request" /> 

确实基本上幕后如下:

Bean bean = (Bean) pageContext.getAttribute("bean", PageContext.REQUEST_SCOPE); 

if (bean == null) { 
    bean = new Bean(); 
    pageContext.setAttribute("bean", bean, PageContext.REQUEST_SCOPE); 
} 

// Use bean ... 

如果它工作之前,并没有工作“的突然”,那么就意味着东西这是负责把豆的范围已停止工作。例如一个servlet这确实在doGet()如下:

request.setAttribute("bean", new Bean()); 
request.getRequestDispatcher("page.jsp").forward(request, response); 

也许你已经通过URL调用,而不是由URL调用Servlet的直接JSP页面。如果您想停用对JSP页面的直接访问,请将它们放入/WEB-INF,然后转发给它。

+0

虽然为时已晚,但的确很好解释@BalusC – dildeepak 2017-07-05 16:28:46

1

您必须添加

<jsp:useBean id="givingFormBean" type="some.packg.GivingForm" scope="request" /> 

因为默认情况下的bean是looked on the page scope