javax.servlet.ServletException: bean [nombre] no encontrado dentro del alcance

StackOverflow https://stackoverflow.com/questions/270444

  •  06-07-2019
  •  | 
  •  

Pregunta

Recibo este error:

javax.servlet.ServletException: bean not found within scope

en una página con esto en la parte superior.

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

La clase existe en el classpath, funcionó esta mañana, y no entiendo lo que no se encuentra dentro del alcance.

¿Cómo se causa esto y cómo puedo resolverlo?

¿Fue útil?

Solución

Necesita el atributo class en lugar del atributo type .

Lo siguiente:

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

hace básicamente lo siguiente detrás de escena:

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

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

// Use bean ...

Mientras que lo siguiente:

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

hace básicamente lo siguiente detrás de escena:

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

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

// Use bean ...

Si ha funcionado antes y no funcionó de repente, significa que algo que es responsable de poner el bean en el ámbito ha dejado de funcionar. Por ejemplo, un servlet que hace lo siguiente en doGet () :

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

Quizás haya invocado la página JSP directamente por URL en lugar de invocar el Servlet por URL. Si desea deshabilitar el acceso directo a las páginas JSP, colóquelas en / WEB-INF y reenvíelo en su lugar.

Otros consejos

Debe agregar

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

Porque, por defecto, el bean es miró en el página alcance

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top