setproperty example ejemplos beans java jsp usebean

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?



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 .