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

Problema struts html:link

Estas en el tema de Problema struts html:link en el foro de Java en Foros del Web. Hola, Tengo una jsp donde obtengo los campos dni y nombre de una busqueda (por ej. todos los usuarios de la bd). En cada usuario ...
  #1 (permalink)  
Antiguo 10/09/2006, 11:58
 
Fecha de Ingreso: enero-2004
Mensajes: 12
Antigüedad: 20 años, 3 meses
Puntos: 0
Problema struts html:link

Hola,

Tengo una jsp donde obtengo los campos dni y nombre de una busqueda (por ej. todos los usuarios de la bd). En cada usuario puedo pulsar y me redireccionara a una pagina donde se veran todos los campos de relacionados con ese usuario.

Para ello tengo un DispatchAction buscarUsuarios que realiza la busqueda de los campos dni y nombre:

request.getSession().setAttribute("listarUsuarios" ,usuarios);

La jsp muestra entonces:

<c:forEach items="${listarUsuarios}" var="lee">

<c:out value="${lee.dni}"></c:out>
<c:out value="${lee.nombre}"></c:out>
<html:link action="buscarUsuarios.do?parametro=editarUsuario" paramName="listarUsuarios" paramId="${lee.dni}">
Editar </html:link>

</c:forEach>

En DispatchAction editarUsuario tengo:

Collection usuarios = (Collection)request.getSession().getAttribute("lis tarUsuarios");
String a = request.getParameter("dni");

usuarios obtiene la informacion que habia en la jsp, pero el string a obtiene el valor null!!!!!

Alguien sabe qué puedo estar haciendo mal?

Gracias.
  #2 (permalink)  
Antiguo 12/09/2006, 00:29
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Que tipo de bean contiene la collection listarUsuarios? podrías usar un Map.

<html:link action="buscarUsuarios.do?parametro=editarUsuario" paramName="listarUsuarios" paramId="${lee.dni}">
Editar </html:link>

Eso está mal , paramId representa el nombre del parámetro en la url y tu le estas pasando el valor (creo), y paramName es el valor, por lo que te estará metiendo la dirección del objeto listarUsurios o algo del estilo.

deberias hacer algo asi:

<html:link action="buscarUsuarios.do?parametro=editarUsuario" paramName="${lee.dni}" paramId="dni">
Editar </html:link>

si ${lee.dni} devuelve el dni, algo del tipo 72345463X por ejemplo.
  #3 (permalink)  
Antiguo 12/09/2006, 01:58
 
Fecha de Ingreso: enero-2004
Mensajes: 12
Antigüedad: 20 años, 3 meses
Puntos: 0
En el ActionForward buscarUsuario hago los siguientes pasos:
//Creo instancia de UsuarioBean.
UsuarioBean bub = new UsuarioBean(getDataSource(request,"proyecto"));
//Creo collection donde pongo los datos obtenidos por la funcion de UsuarioBean que busca la info en la BD.
Collection usuarios = bub.getUsuarios((String)((DynaValidatorForm)form). get("dni"), (String)((DynaValidatorForm)form).get("nombre"), (String)((DynaValidatorForm)form).get("apellido1") , (String)((DynaValidatorForm)form).get("apellido2") );
//Guardo la collection en sesion.
request.getSession().setAttribute("listarUsuarios" ,usuarios);

Si hago lo que me has dicho, ni siquiera me muestra la pagina donde puedo escoger usuario a modificar, sino que me sale el error
javax.servlet.ServletException: Cannot find bean: "72345463X" in any scope!!!!

Me desespero!!!!
  #4 (permalink)  
Antiguo 12/09/2006, 07:22
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Yo haría lo siguiente:

Código PHP:
<logic:iterate name="listarUsuarios" id="usuario">
<
bean:write name="usuario" property="dni"/>
<
bean:write name="usuario" property="nombre"/>
<
html:link action="buscarUsuarios.do?parametro=editarUsuario" paramName="usuario" paramProperty="dni" paramId="dni"/>
</
logic:iterate
Así debería funcionar.

Sino, dime de que tipo de Bean es la variable "lee" que tienes puesta, los elementos que contiene la collection. Puedes definir en el Bean de esos elementos una función asi:

Código PHP:
public Map getParametros(){
   
Map parametros = new HashMap();
   
parametros.put("parametro","editarUsuario");
   
parametros.put("dni",this.dni); //suponiendo que el Bean tenga un   
                                              //atributo dni
   
return parametros;

y entonces cambias el html:link por esto:

Código PHP:
<html:link action="/buscarUsuarios" name="lee" property="parametros"/> 
De las dos formas debería funcionar, lo que no sé es que es el c:out y eso, supongo que serán etiquetas propias.

Saludos!
  #5 (permalink)  
Antiguo 13/09/2006, 09:59
 
Fecha de Ingreso: enero-2004
Mensajes: 12
Antigüedad: 20 años, 3 meses
Puntos: 0
Muchas gracias!!! La primera opcion me ha servido.

No se por que, pero haciendo lo que me has dicho me reconoce la variable dni en la funcion que tenia.
String dni = request.getParameter("dni");

No se por que razon con lo que yo ponia no funcionaba... pero bueno, ya esta!!

Gracias.
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 02:49.