Foros del Web » Programación para mayores de 30 ;) » Java »

Recuperar desde un Servlet un parámetro de un JSP que contiene Javascript

Estas en el tema de Recuperar desde un Servlet un parámetro de un JSP que contiene Javascript en el foro de Java en Foros del Web. El problema es el siguiente: En un Servlet tengo el método eliminar que recupera el parámetro usuario que llega desde un JSP Código: private void ...
  #1 (permalink)  
Antiguo 05/06/2010, 19:49
 
Fecha de Ingreso: junio-2010
Ubicación: Antofagasta
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Recuperar desde un Servlet un parámetro de un JSP que contiene Javascript

El problema es el siguiente:

En un Servlet tengo el método eliminar que recupera el parámetro usuario que llega desde un JSP

Código:
private void eliminar(HttpServletRequest request,HttpServletResponse response){
     String v_usuario = request.getParameter("usuario");
[...]
}
En el JSP envío el parámetro en JSTL mediante un vínculo en HTML al Servlet anterior, que posee el alias cliente.pe

Código:
<a href="cliente.pe?usuario=${cli.usuario}">E</a>
Lo anterior funciona perfectamente; sin embargo, necesito enviar el valor de usuario desde una función en Javascript

Código:
<a href="javascript:f_elimina('${cli.usuario}')">E</a>
Código:
function f_elimina(p_usuario){	
     document.forms[0].action='cliente.pe';
     document.forms[0].usuario.value=p_usuario;
}
Al ejecutar el código, se le asigna el valor de ${cli.usuario} a p_usuario satisfactoriamente, pero el valor no llega al Servlet, al parecer la función no logra invocarlo.

Sospecho que es un error de sintaxis en

Código:
document.forms[0].usuario.value=p_usuario;
También podría ser que el Servlet sí esté siendo invocado, pero que request.getParameter no sea la forma correcta de recuperar el parámetro. O quizás ocurren las dos situaciones a la vez, el Servlet no es invocado y request.getParameter no debe ser usado.

PD: No estoy completamente seguro si este tema debe ir en el foro Java (JSP / Servlet) por lo del código en Javascript.

Luis V

Última edición por luis10307; 06/06/2010 a las 02:43
  #2 (permalink)  
Antiguo 06/06/2010, 05:37
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Recuperar desde un Servlet un parámetro de un JSP que contiene Javascript

te voy a responder desde mi ignorancia, no se si eso de ${} es de java o no porque mñas bien me recuerda a PHP o incluso a scripting en shell o awk.... pero bueno... dices que funciona así que tendré que creerlo...

No soy muy de javascript yo, pero quizás el problema sea que no exista en el formulario el objeto <input name"usuario"/> por eso quizás al acceder al elemento desde el DOM no te lo guarde. no se si será ese el problema o no...haz la prueba a crear un input hidden...

En cuanto a lo de que el servlet no recoja los parámetros te puedo decir que si lo has implementado en el método doGet, con el request.getParameter("nombre_paraḿetro") es la manera correcta.

Suerte, y espero haverte ayudado en algo
  #3 (permalink)  
Antiguo 08/06/2010, 02:09
 
Fecha de Ingreso: junio-2010
Ubicación: Antofagasta
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Mensaje Respuesta: Recuperar desde un Servlet un parámetro de un JSP que contiene Javascript

Denis127, gracias por tu respuesta. Acertaste directamente con la razón del problema.

Cita:
quizás el problema sea que no exista en el formulario el objeto <input name"usuario"/> por eso quizás al acceder al elemento desde el DOM no te lo guarde
Efectivamente, ha sido un error propio de quien empieza a divertirse con Java EE sin conocimientos previos de HTML y Javascript. Es la primera vez que escucho sobre el Document Object Model (DOM), no sabía que "al acceder al elemento desde el DOM", este era el responsable de "guardarlo" (debo profundizar sobre el significado de ese último término) y también he descubierto que DOM tiene que ver con una línea que se encuentra en el JSP

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
El problema que he planteado en el tema lo solucioné de la siguiente manera:

Primero, en el formulario, agregué el hidden respectivo

Código:
<input type="hidden" name="usuario"></input> 
Luego, en la función, agregué el método submit para enviar los datos del formulario al Servlet

Código:
function f_elimina(p_usuario){	
     document.forms[0].action='cliente.pe';
     document.forms[0].usuario.value=p_usuario;
     document.forms[0].submit();	
}
En el vínculo en HTML, que invoca a la función, no necesité realizar modificaciones

Código:
<a href="javascript:f_elimina('${cli.usuario}')">E</a>
Cita:
no se si eso de ${} es de java o no porque mñas bien me recuerda a PHP o incluso a scripting en shell o awk
${cli.usuario} es código de JavaServer Pages Standard Tag Library (JSTL) que utiliza el Expression Languaje (EL) para evitar el uso de código Java en un JSP (JSP Scripting: Declarations, Scriplets y Expressions).

Cita:
En cuanto a lo de que el servlet no recoja los parámetros te puedo decir que si lo has implementado en el método doGet, con el request.getParameter("nombre_paraḿetro") es la manera correcta.
Tras la corrección, quedó en evidencia que el Servlet siempre fue llamado correctamente. El método eliminar es invocado por el método service y no por doGet en el Servlet que he programado

Código:
protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
[...]
     this.eliminar(request,response);
[...] 
}
Código:
private void eliminar(HttpServletRequest request,HttpServletResponse response){
     String v_usuario = request.getParameter("usuario");
[...]
}
Saludos.

Última edición por luis10307; 30/12/2010 a las 16:52

Etiquetas: html, javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:25.