Java - Ayuda en el llenado de una tabla, como pintar un campo de una tabla con una lista en java?

   
Vista:

Ayuda en el llenado de una tabla, como pintar un campo de una tabla con una lista en java?

Publicado por root94 (14 intervenciones) el 26/03/2018 07:56:43
Tengo la siguiente lista
1
private List<Object[]> listFechas = new ArrayList<>();
a la cual le paso un find
1
listFechas = registroAccesoService.findRegistroAccesoBy(cvePersona, strFecha);
que me devuelve un List<Object[]>

tengo el siguiente codigo en mi metodo
1
2
3
4
5
6
7
8
9
10
11
12
13
String strFecha = "02/08/2012";
listFechas = registroAccesoService.findRegistroAccesoBy(cvePersona, strFecha);
 
Iterator it = listFechas.iterator();
while (it.hasNext()) {
	Object[] line = (Object[]) it.next();
	RegistroAcceso eq = new RegistroAcceso();
	eq.setFecRegistroEntrada((Date) line[0]);
 
	listRegistroAcceso2.add(eq);
	System.out.println("LISTA DOS" + listRegistroAcceso2.get(0).getFecRegistroEntrada());
	fechaMaxima = listRegistroAcceso2.get(0).getFecRegistroEntrada();
}

y asi obtengo lo que hay adentro de la lista Object[], que recupero lo que hay en el campo fecRegistroEntrada que es de tipo Date, en consola me pinta: 2012-08-02 18:55:28.0

Ahora esa fecha la quiero pintar en una tabla, en el campo entrada
asi tengo mi tabla
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!--Tabla que muestra los detalles de las incidencias-->
<p:dataTable  id="detalle" var="detalle"   value="#{RegistroAccesoComponent.fechasIncidencias}"
			emptyMessage="No se encontraron registros." selectionMode="single" selection="#{RegistroAccesoComponent.fechaIncidencia}"
			rowKey="#{detalle.fecha}" >
 
	<p:ajax event="rowSelect" listener="#{RegistroAccesoComponent.seleccionaFecha}"  update=":form:carDetail" oncomplete="PF('modalIntentos').show();" />
	<p:column headerText="FECHA"  style="width: 100px;">
		<h:outputText value="#{detalle.fecha}">
			<f:convertDateTime  type="date" pattern="dd/MM/yyyy"/>
		</h:outputText>
	</p:column>
 
	<p:column headerText="ENTRADA" style="width: 100px;" >
		<h:outputText value="#{RegistroAccesoComponent.fechaMaxima}">
			<f:convertDateTime type="date" timeZone="CST" pattern="HH:mm:ss"/>
		</h:outputText>
 
	</p:column>
	<p:column headerText="SALIDA" style="width: 100px;">
		<h:outputText  >
			<f:convertDateTime type="date" timeZone="CST" pattern="HH:mm:ss"/>
		</h:outputText>
	</p:column>
	<p:column headerText="INCIDENCIA" >
		<h:outputText value="#{detalle.incidencia.incidencias.cveIdIncidencia} - #{detalle.incidencia.incidencias.concepto}"/>
	</p:column>
	<p:column headerText="ACCIÓN" style="width: 100px;" >
		<h:outputText styleClass="ui-corner-all ui-icon ui-icon-search" ></h:outputText>
	</p:column>
</p:dataTable>

y me pinta lo siguiente


EJEMPLOTABLAAA-iloveimg-cropped

pero me lo repite n veces, y yo no quiero eso, quiero que solo se pinte la hora en la fecha que me devuelve el resultado

La lista con la lleno mi tabla "fechasIncidencias", la obtengo asi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public List<FechaIncidencia> crearFechaIncidencia(List<IncidenciaAnioMesDet> incidenciaAnioMesDet, int annio, int mes) {
	List<Date> fechas = crearFechas(annio, mes);
 
	Calendar calendar = Calendar.getInstance();
	for (Date fecha : fechas) {
		FechaIncidencia fechaIncidencia = new FechaIncidencia();
		fechaIncidencia.setFecha(fecha);
		calendar.setTime(fecha);
		for (IncidenciaAnioMesDet incidencia : incidenciaAnioMesDet) {
			if (calendar.get(Calendar.DAY_OF_MONTH) == incidencia.getDia()) {
				fechaIncidencia.setIncidencia(incidencia);
 
				break;
			}
 
		}
 
		fechasIncidencias.add(fechaIncidencia);
 
	}
	return fechasIncidencias;
}

tengo una lista de Dates la cual pinta todos los días del mes actual ,como se ve en la imagen,
entonces estaba pensando hacer el match con mi lista listRegistroAcceso2 que es de tipo Registro Acceso, de la siguiente manera
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public List<FechaIncidencia> crearFechaIncidencia(List<IncidenciaAnioMesDet> incidenciaAnioMesDet,List<RegistroAcceso> listRegistroAcceso2, int annio, int mes) {
	List<Date> fechas = crearFechas(annio, mes);
 
	Calendar calendar = Calendar.getInstance();
	for (Date fecha : fechas) {
		FechaIncidencia fechaIncidencia = new FechaIncidencia();
		fechaIncidencia.setFecha(fecha);
		calendar.setTime(fecha);
		for (IncidenciaAnioMesDet incidencia : incidenciaAnioMesDet) {
			if (calendar.get(Calendar.DAY_OF_MONTH) == incidencia.getDia()) {
				fechaIncidencia.setIncidencia(incidencia);
 
				break;
			}
 
		}
		for (RegistroAcceso registroAcceso1 : listRegistroAcceso2) {
			if (calendar.get(Calendar.DAY_OF_MONTH) == registroAcceso1.getFecRegistroEntrada().hashCode()) {
				fechaIncidencia.setRegistroAcceso(registroAcceso1);
			}
		}
		fechasIncidencias.add(fechaIncidencia);
 
	}
	return fechasIncidencias;
}

pero me manda null pointer, como puedo hacer el match para que lo que me regresa mi lista tipo Object[], pueda pintarse en la fecha correcta y no en todas las filas?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder