Listas

Como faço para uma lista pegar informações de outra lista?

Por exemplo: lista1 - de vendedores.

lista2 - os clientes desse vendedor (no máximo 4 por vendedor)

fazer uma tabela em jsp com essas duas listas, com vendedores e seus devidos clientes.

Alguém pode me ajudar? please?

Tava usando ArrayList, consigo as duas listas, mas não fazer elas juntas.

Sua classe vendedor tem um ArrayList de clientes:class Vendedor() { ArrayList<Cliente> clientes; ... }Então na servlet você coloca a lista de vendedores no request:ArrayList<Vendedor> vendedores = createList(); request.setAttribute("vendedores", vendedores);Aí é só iterar uma lista dentro da outra:[code]

[/code]Blz? Flw! :thumbup:

Eu estou tentando, mas como ficaria para acesso a tabelas em um banco de dados?

Usando SQL. Daria para dar um where?

É isso q não estou conseguindo.

Obrigado.

Sim, imagino que você tenha uma classe de acesso ao banco, então é só pegar do request o parâmetro que você vai utilizar como filtro e passar para o método que busca os dados no banco, aí é só criar as listas e fazer como está no post anterior.

Blz Flw! :thumbup:

Obrigado von.juliano,

Tentei adaptar suas idéias ao meu trabalho.

O exemplo que dei foi para facilitar o entendimento. Apesar do sistema estar ficando interessante, ainda estou engatinhando no Java, mas estou fazendo tudo em MVC e procurando seguir os patterns.

Na verdade não são clientes e vendedores e sim, Banca, candidatos, subbanca (onde aparecem os professores que estão na banca). Mas a idéia é a mesma.

Se o candidato vai defender mestrado, são 3 professores na banca, um o orientador e mais dois professores, se for doutorado, além do orientador, mais 4 professores.

Fiz o jsp com jstl, fiz as servlets e o DAO.

No DAO fiz as listas.


public ListgetLista_cc() throws SQLException{
PreparedStatement stmt= this.connection.prepareStatement(“SELECT …”);
ResultSet rs=stmt.executeQuery();
ArrayListlist_cc = new ArrayList();
ContatoDAO dao;
while(rs.next()){

			Contato c1=new Contato();
			
			c1.setNumero(rs.getInt("numero"));	
			c1.setData(rs.getDate("data"));
			c1.setHorario(rs.getTime("horario"));
			c1.setNome_aluno(rs.getString("nome_aluno"));
			c1.setTitulo(rs.getString("titulo"));
			c1.setTipo(rs.getBoolean("tipo"));
			c1.setNome_professor(rs.getString("nome_professor"));  // esse é o Orientador.
			c1.setDescricao(rs.getString("descricao"));

// aqui abaixo estou pegando o número da banca e jogando mais abaixo

			try{
				dao=new ContatoDAO();
				ContatoDAO.setnumero(rs.getInt("numero"));
				}catch(SQLException e){
					e.printStackTrace();
				}	
			
			list_cc.add(c1);
	}
	rs.close();
	stmt.close();
	return list_cc;
}	

// aqui recebe o número da banca.

public static void setnumero(Integer numero)throws SQLException{
numerox=numero;
System.out.println(numerox);
}

// aqui abaixo fiz a lista dos orientadores das bancas, pegando na cláusula where o “numerox” número da banca, para associar a tabela subbanca que tem os orientadores.

public List<Contato>getLista_ccp() throws SQLException{
	PreparedStatement stmt= this.connection.prepareStatement("SELECT .......   where subbanca.defesa="+numerox);
	ResultSet rs=stmt.executeQuery();
	
	ArrayList<Contato>list_ccp = new ArrayList<Contato>();
	
	while(rs.next()){
		Contato c1=new Contato();
		c1.setNome_professor(rs.getString("nome_professor"));
		c1.setInstituicao(rs.getInt("instituicao"));
		c1.setIdp(rs.getInt("idp"));
		list_ccp.add(c1);
	}
	
	rs.close();
	stmt.close();
	return list_ccp;
}

No jsp:

O nome dos orientadores se repetem de forma igual, não dando distinção para a banca certa, ou seja todos os orientadores aparecem iguais para todas as bancas.

Não aparece assim: banca1 - orientadores da banca1
banca2 -orientadores da banca2

aparece:
banca 1 -todos os orientadores de todas as bancas
banca2 - todos os orientadores de todas as bancas

Será que há alguma forma de arrumar isso, ou terei que refazer todo o procedimento?


<jsp:useBean id=“dao” class=“br.direito.defesas.dao.ContatoDAO” />

   <c:forEach var="contato" items="${dao.lista_cc}">
<td>
	<font size="2" color="#FFFFFF"><fmt:formatDate value="${contato.horario}" pattern="HH:mm" /></font>
</td>
<td>
	<font size="2" color="#FFFFFF">${contato.descricao}</font>
</td>

<td>
	<script language="JavaScript">
		if(${contato.tipo}==true){
		    document.write("<font size='2' color='#FFFFFF'>Doutorado</font>");
		}
		else{
			document.write("<font size='2'  color='#FFFFFF'>Mestrado</font>");
		} 
	</script>
</td>
Nome do Aluno
<td>
	<font size='2'>Orientador</font>
</td>
<td>
	<font size='2'>Título</font>
</td>
<TD colspan="2">	
   	<font size="2">${contato.nome_aluno}</font>
</td>

<td>
	<font size="2">${contato.nome_professor}</font>
</td>   	
<td>
	<font size="2">${contato.titulo}</font>
</td>
<td>
	
</td>  
Bancax [color=red] ${contato.nome_professor} [/color]

Obrigado, desculpa a linguiça.

Oi simberg
Cara, primeiro de tudo, dá uma formatada no seu post com as tags code, que assim num dá pra entender nada.

Com jstl você está iterando apenas uma lista, é assim que deve ser mesmo? Não entendi direito seu código, acerte ele aew que eu olho melhor.

Flw! :thumbup:

Vou melhorar e coloco novamente.

Finalmente:
Na verdade não são clientes e vendedores e sim, Banca, candidatos, subbanca (onde aparecem os professores que estão na banca). Mas a idéia é a mesma.

Se o candidato vai defender mestrado, são 3 professores na banca, um o orientador e mais dois professores, se for doutorado, além do orientador, mais 4 professores.

Fiz o jsp com jstl, fiz as servlets e o DAO.

No DAO fiz as listas.


public List<Contato>getLista_cc() throws SQLException{
PreparedStatement stmt= this.connection.prepareStatement("SELECT .......");
ResultSet rs=stmt.executeQuery();
ArrayList<Contato>list_cc = new ArrayList<Contato>();
       ContatoDAO dao;
       while(rs.next()){

              Contato c1=new Contato();

              c1.setNumero(rs.getInt("numero"));
              c1.setData(rs.getDate("data"));
              c1.setHorario(rs.getTime("horario"));
              c1.setNome_aluno(rs.getString("nome_aluno"));
              c1.setTitulo(rs.getString("titulo"));
              c1.setTipo(rs.getBoolean("tipo"));
              c1.setNome_professor(rs.getString("nome_professor")); // esse é o Orientador.
              c1.setDescricao(rs.getString("descricao"));

aqui abaixo estou pegando o número da banca e jogando mais abaixo


 try{
        dao=new ContatoDAO();
        ContatoDAO.setnumero(rs.getInt("numero"));
}catch(SQLException e){
        e.printStackTrace();
}

list_cc.add(c1);
}
rs.close();
stmt.close();
return list_cc;
} 

aqui recebe o número da banca.


public static void setnumero(Integer numero)throws SQLException{
       numerox=numero;
       
} 

aqui abaixo fiz a lista dos orientadores das bancas, pegando na cláusula where o “numerox” número da banca, para associar a tabela subbanca que tem os orientadores.


public List<Contato>getLista_ccp() throws SQLException{
     PreparedStatement stmt= this.connection.prepareStatement("SELECT ....... where subbanca.defesa="+numerox);
     ResultSet rs=stmt.executeQuery();

     ArrayList<Contato>list_ccp = new ArrayList<Contato>();

     while(rs.next()){
           Contato c1=new Contato();
           c1.setNome_professor(rs.getString("nome_professor"));
           c1.setInstituicao(rs.getInt("instituicao"));
           c1.setIdp(rs.getInt("idp"));
           list_ccp.add(c1);
     }

rs.close();
stmt.close();
return list_ccp;
} 

No jsp:

O nome dos orientadores se repetem de forma igual, não dando distinção para a banca certa, ou seja todos os orientadores aparecem iguais para todas as bancas.

Não aparece assim: banca1 - orientadores da banca1
banca2 -orientadores da banca2

aparece:
banca 1 -todos os orientadores de todas as bancas
banca2 - todos os orientadores de todas as bancas

Será que há alguma forma de arrumar isso, ou terei que refazer todo o procedimento?


 <jsp:useBean id="dao" class="br.direito.defesas.dao.ContatoDAO" />

<c:forEach var="contato" items="${dao.lista_cc}">
<tr bgcolor="#990000">
<TD>
<font size="2" color="#FFFFFF"><fmt:formatDate value="${contato.data}" pattern="dd-MM-yyyy" /> </font>
</TD>

<td>
<font size="2" color="#FFFFFF"><fmt:formatDate value="${contato.horario}" pattern="HH:mm" /></font>
</td>
<td>
<font size="2" color="#FFFFFF">${contato.descricao}</font>
</td>

<td>
<script language="JavaScript">
if(${contato.tipo}==true){
document.write("<font size='2' color='#FFFFFF'>Doutorado</font>");
}
else{
document.write("<font size='2' color='#FFFFFF'>Mestrado</font>");
}
</script>
</td>
</tr>
<tr>
<td colspan="2">
<font size='2'>Nome do Aluno</font>
</td>

<td>
<font size='2'>Orientador</font>
</td>
<td>
<font size='2'>Título</font>
</td>

</tr>
<tr>

<TD colspan="2">
<font size="2">${contato.nome_aluno}</font>
</td>

<td>
<font size="2">${contato.nome_professor}</font>
</td>
<td>
<font size="2">${contato.titulo}</font>
</td>
<td>

</td>

</tr>
<tr>
<td colspan="4">
Bancax
</td>
<td>
<c:forEach var="contato" items="${dao.lista_ccp}">
${contato.nome_professor}
</c:forEach>
</td>
</tr>
</c:forEach>

Agora acho q melhorou um pouco.