Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2013, 03:30
Avatar de fpalomar
fpalomar
 
Fecha de Ingreso: noviembre-2003
Mensajes: 123
Antigüedad: 20 años, 5 meses
Puntos: 3
Mostrar el resultado de una consulta

Hola,

Estoy con la parte de un aplicativo, que integra Struts2-Hibernate-Tiles, que es la de buscar.

Si la busqueda es solo para obtener un resuktado no hay ningún problema:

Código del método execute() del action:

Código:
public String execute() {
		
		try {
			hibernateSession = HibernateUtil.getSessionFactory().openSession();
						hibernateSession.beginTransaction();
			
			String queryBusqueda = "FROM Usuario WHERE " + getCriterio() +"='" + getParametro() + "'";
			System.out.println(queryBusqueda);
			usuario = (Usuario) hibernateSession.createQuery(queryBusqueda).uniqueResult();
						
			//Limpia el campo de busqueda
			setParametro("");
			
			if(usuario==null){
				addActionError("No existe");
				return INPUT;
			}
			
			
		} catch (HibernateException e) {
				e.printStackTrace();
		}
				
		return SUCCESS;
Parte de código de la JSP dónde se visualiza:

Código:
<div id="resultado">		
		
				<table id="cabecera" border="1">
				<tr>	
					<th>Nombre</th>
					<th>Apellido</th>
					<th>NIFCIF</th>
					<th>E-mail</th>
					<th>Teléfono</th>
					<th>Empresa</th>
					<th>Departamento</th> 
				</tr>
			<%-- 	<s:iterator value="listaUsuarios" var="usuario"> --%>
					<tr>
						<td><s:property value="usuario.nombre" />
						<td><s:property value="usuario.apellido"/> </td>
						<td><s:property value="usuario.NIFCIF" /></td>
						<td><s:property value="usuario.email" /></td>
						<td><s:property value="usuario.telefono"/></td>
						<td><s:property value="usuario.empresa" />
						<td><s:property value="usuario.departamento"/> </td>
					</tr>	
				<%-- </s:iterator> --%>
				</table>			
		</div>
Esto va de maravilla y el resultado és el de la imagen. Pero ya sabeis que con un registro solo seria palo de busqueda porque la consulta puede devolver más de uno.

Por eso he provado con las moficiaciones siguientes:
- En el metodo execute() del action hago el siguiente cambio:

Código:
usuario = (Usuario) hibernateSession.createQuery(queryBusqueda).uniqueResult();
Por
Código:
listaUsuarios= (List<Usuario>) hibernateSession.createQuery(queryBusqueda).list();
Así devuelve una lista con los resultados que ha encontrado.

- En la JSP le quito el comentario al iterador:
Código:
<div id="resultado">		
		
				<table id="cabecera" border="1">
				<tr>	
					<th>Nombre</th>
					<th>Apellido</th>
					<th>NIFCIF</th>
					<th>E-mail</th>
					<th>Teléfono</th>
					<th>Empresa</th>
					<th>Departamento</th> 
				</tr>
				<s:iterator value="listaUsuarios" var="usuario">
					<tr>
						<td><s:property value="usuario.nombre" />
						<td><s:property value="usuario.apellido"/> </td>
						<td><s:property value="usuario.NIFCIF" /></td>
						<td><s:property value="usuario.email" /></td>
						<td><s:property value="usuario.telefono"/></td>
						<td><s:property value="usuario.empresa" />
						<td><s:property value="usuario.departamento"/> </td>
					</tr>	
				</s:iterator>
				</table>			
		</div>
Pues esto funciona, a medias,por que he dirigido el resulto hacia la consulta y se ve como en la imagen, pero no en la JSP.

¿Donde puedo estar fallando?

Saludos