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

combobox sin repetir valores

Estas en el tema de combobox sin repetir valores en el foro de Java en Foros del Web. Hola me ha surgido un problema que ni idea de como solucionarlo a ver si me explico bien. Tengo una BD con proyectos. Cada proytecto ...
  #1 (permalink)  
Antiguo 19/07/2011, 03:51
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
combobox sin repetir valores

Hola me ha surgido un problema que ni idea de como solucionarlo a ver si me explico bien.

Tengo una BD con proyectos. Cada proytecto tiene un nombre de proyecto, motor, oferta, nivel y cliente.

Tengo un jsp en el que hay dos links, uno para nueva oferta y otro para ver oferta, es este:
Código:
<jsp:include page="includes/header.jsp"/>
<jsp:include page="includes/menu.jsp"/>
<jsp:include page="includes/content.jsp"/>

<a href="RedirectServlet?url=/nuevo.jsp">Nueva Oferta</a><br>
<p>
<a href="verProyecto">Ver Oferta</a>

<jsp:include page="includes/sidebar.jsp"/>
<jsp:include page="includes/footer.jsp"/>
Como podeis ver "Ver Oferta" pasa por un servlet y este es el servlet:
Código:
package Servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import Dao.*;

public class ServletVerProyecto extends ServletBase{
	
	@Override
	void execute(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		HttpSession session=req.getSession(true);
		
		OfertasFacade facade=new OfertasFacade();
		Ofertas ofertak=facade.ofertas();
		
		req.setAttribute("ofertak", ofertak.getOfertas());		
				
		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/ver.jsp");
		dispatcher.forward(req, resp);
	}
        
        ...
}
En esta línea 'req.setAttribute("ofertak", ofertak.getOfertas());' meto en el atributo ofertak, todas las ofertas que tengo y voy a ver.jsp, que sería este:
Código:
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<jsp:include page="includes/header.jsp"/>
<jsp:include page="includes/menu.jsp"/>
<jsp:include page="includes/content.jsp"/>

<div align="right"><a  href="RedirectServlet?url=/index.jsp">Ir a las fases</a></div>	
Proyecto:
<select name="verProyecto" size="5" onchange="location=this.options[this.selectedIndex].name;">>
	<c:forEach var="x" items="${requestScope.ofertak}">
		<option value="${x.idproy}" name="${x.idproy}" selected>${x.proyecto}</option>
	</c:forEach>
</select>

Motor:
<select name="verProyecto" size="5" onchange="location=this.options[this.selectedIndex].name;">>
	<c:forEach var="x" items="${requestScope.ofertak}">
		<option value="${x.idproy}" name="${x.idproy}" selected>${x.motor}</option>
	</c:forEach>
</select>

Oferta:
<select name="verProyecto" size="5" onchange="location=this.options[this.selectedIndex].name;">>
	<c:forEach var="x" items="${requestScope.ofertak}">
		<option value="${x.idproy}" name="${x.idproy}" selected>${x.oferta}</option>
	</c:forEach>
</select>

<jsp:include page="includes/sidebar.jsp"/>
<jsp:include page="includes/footer.jsp"/>
Bien pues en el combobox me aparece lo que quiero pero hay un problema y es que algunos valores son null (pueden serlo) y otros se repiten (pueden repetirse) y lo que me gustaría es hacer que no se viesen ni los null ni los repetidos.

Espero haberme explicado bien y a ver is alguien puede ayudarme, gracias de antemano
  #2 (permalink)  
Antiguo 19/07/2011, 04:30
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: combobox sin repetir valores

hola,

entiendo que ofertak.getOfertas() devuelve un listado de objectos oferta.

Si fuera tu, en ese metodo getOfertas() realizaria un procesamiento del listado de salida evitando los nulos y los repetidos.

espero que te sirva.
  #3 (permalink)  
Antiguo 19/07/2011, 05:03
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: combobox sin repetir valores

Si es que el problema es que no sé como decirselo. Es decir, puedo recorrer pero como le digo si está o no repetido o es nulo???
  #4 (permalink)  
Antiguo 19/07/2011, 05:33
Avatar de edjuradob  
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: combobox sin repetir valores

En tu tabla ¿las ofertas pueden ser nulas o repetidas? Se me haría muy extraño que asi fuera.
Me parece que el problema que tienes esta más en el modelado de la base de datos. Asi con la información que das, me parecería que ofertas podría pertenecer a otra tabla, pero bueno, son solo especulaciones.
El problema de los repetidos y los nulos lo deberías filtrar en la query, que es la solución más sencilla. Quedaría algo asi:
Código SQL:
Ver original
  1. SELECT oferta FROM Proyectos
  2. WHERE oferta<> NULL
  3. GROUP BY oferta
Un saludo.
  #5 (permalink)  
Antiguo 19/07/2011, 07:04
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: combobox sin repetir valores

Pueden ser repetidas, ya que tengo que ahcer varios filtros, como pueden ser, que un motor pertenezca a varias ofertas y estas ofertas peuden tener diferentes niveles. Es decir, tendría que ahcer, primero elegir un motor, y según lo que haya elegido me tendría que salir en el combobox de ofertas, las ofertas con ese motor. Oye, pensandolo bien, claro, la BD en sí no está bien, verdad??? tendría que separar mejor motor y oferta??? esto mejor voy a preguntarlo en su sitio.

Etiquetas: combobox, repetir
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 05:38.