java - example - jsp:usebean ejemplos
javax.servlet.ServletException: bean[nombre] no se encuentra dentro del alcance (2)
Me aparece 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 obtengo lo que no se encuentra dentro del alcance.
¿Cómo es esto causado y cómo puedo resolverlo?
Debes agregar
<jsp:useBean id="givingFormBean" type="some.packg.GivingForm" scope="request" />
Porque por defecto el bean se mira en el alcance de la página
Necesita el atributo de class
lugar del atributo de type
.
El seguimiento:
<jsp:useBean id="bean" type="com.example.Bean" scope="request" />
básicamente hace 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 el siguiente:
<jsp:useBean id="bean" class="com.example.Bean" scope="request" />
básicamente hace 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 alcance 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);
Tal vez invocó 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 /WEB-INF
.