2008-11-06 50 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