El valor pasado con request.setAttribute () no está disponible por request.getParameter ()

Le doy a una variable de cadena un valor en la ejecución normal del código, pero si ocurre una excepción le daré otro valor, el problema es que en el bloque catch el valor sigue siendo el mismo que el primero .

Aquí está mi código, primero asigno el valor de la página “addUser” dentro del bloque try y en catch le doy el valor “ErrorPage”, le envío el valor de la página dentro de la solicitud http al método forword y en su interior imprimo el valor de la página. Causa un error en la ejecución del código y quiero que pase por catch block, y lo hace, pero cuando envía el valor de la página a la función forword el valor de la página es “addUser” no “ErrorPage” aunque asigno a “ErrorPage” !!

String page = "addUser"; try { // ... request.setAttribute("page", page); forward(request, response); } catch (SQLException e) { page = "ErrorPage"; request.setAttribute("page", page); forward(request, response); } 

y aquí está la función de forword

 String page = request.getParameter("page"); System.out.println("page is " + page); // each time it prints addUSer 

¿Alguien puede ayudar? y gracias de antemano.

Está llamando a request.getParameter() lugar de a request.getAttribute() para obtener el valor. Como lo ha establecido como atributo de solicitud, también debe obtenerlo como atributo de solicitud.

Asi que:

 request.setAttribute("foo", foo); 

solo está disponible por

 Object foo = request.getAttribute("foo"); // NOT getParameter(). 

El getParameter() es solo para los parámetros de solicitud HTTP, como puede especificar en URL de solicitud o en campos de entrada de formularios HTML.

Además del punto de BalusC ”

En su código, ha declarado dos variables “String page”. Esto no comstackrá Creo que el parámetro que está pasando a la solicitud en la captura debe ser la “otra” variable de página. Pero es difícil de decir ya que este no es un verdadero ejemplo.