2008-11-06 13 views
13

estoy recibiendo este error:javax.servlet.ServletException: frijol [nombre] no se encuentra dentro del ámbito

javax.servlet.ServletException: bean not found within scope 

en una página con este 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 se causa esto y cómo puedo solucionarlo?

Respuesta

28

Es necesario el atributo en lugar del atributo typeclass.

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.

+0

Aunque es demasiado tarde, pero de hecho una gran explicación @BalusC – dildeepak

1

debe agregar

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

ya que por defecto es el grano de looked on the page scope

Cuestiones relacionadas