Es necesario el atributo en lugar del atributo type
class
.
la siguiente:
<jsp:useBean id="bean" type="com.example.Bean" scope="request" />
hace básicamente la siguiente detrás de las escenas:
Bean bean = (Bean) pageContext.getAttribute("bean", PageContext.REQUEST_SCOPE);
if (bean == null) {
throw new ServletException("bean not found within scope");
}
// Use bean ...
Aunque la siguiente:
<jsp:useBean id="bean" class="com.example.Bean" scope="request" />
hace básicamente lo siguiente detrás de las escenas:
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 se ha trabajado antes y no funcionó "en una repentina", entonces significa que algo que es el encargado de poner el grano en el perímetro ha dejado de funcionar. Por ejemplo, un servlet que hace lo siguiente en el doGet()
:
request.setAttribute("bean", new Bean());
request.getRequestDispatcher("page.jsp").forward(request, response);
Tal vez usted ha 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 remítalas a ella.
Aunque es demasiado tarde, pero de hecho una gran explicación @BalusC – dildeepak