javax.servlet.ServletException: bean [name] not found within scope

前端 未结 2 1220
粉色の甜心
粉色の甜心 2020-12-03 03:26

I\'m getting this error:

javax.servlet.ServletException: bean not found within scope

on a page with this at the top.



        
相关标签:
2条回答
  • 2020-12-03 04:05

    You must add

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

    Because by default the bean is looked on the page scope

    0 讨论(0)
  • 2020-12-03 04:18

    You need the class attribute instead of the type attribute.

    The following:

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

    does basically the following behind the scenes:

    Bean bean = (Bean) pageContext.getAttribute("bean", PageContext.REQUEST_SCOPE);
    
    if (bean == null) {
        throw new ServletException("bean not found within scope");
    }
    
    // Use bean ...
    

    While the following:

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

    does basically the following behind the scenes:

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

    If it has worked before and it didn't work "in a sudden", then it means that something which is responsible for putting the bean in the scope has stopped working. For example a servlet which does the following in the doGet():

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

    Maybe you've invoked the JSP page directly by URL instead of invoking the Servlet by URL. If you'd like to disable direct access to JSP pages, then put them in /WEB-INF and forward to it instead.

    0 讨论(0)
提交回复
热议问题