Iterações com HashMap em Jsf

7 respostas
E

Alguém pode me dar uma idéia como fazeria esta implementação em jsf, exibindo numa tabela …

Obrigado.

//		for (String terminal : agrupamento.keySet())
//		{
//			Map<Date, Collection<Dado>> mapaTerminal = agrupamento.get(terminal);
//			BigDecimal somaTerminal = BigDecimal.ZERO;
//			
//			for (Date data : mapaTerminal.keySet())
//			{												
//				Collection<Dado> dados = mapaTerminal.get(data);
//				System.out.println("..............................................................................");
//				System.out.println("\n\nTerminal.....: " + terminal + " Data .......: " + data +"\n\n");
//				System.out.println("..............................................................................");
//				
//				BigDecimal somaData = BigDecimal.ZERO;
//				
//				for (Dado dadoLinha : dados)
//				{
//					System.out.println("Terminal...: " + dadoLinha.getTerminal()+ "Agencia....: " + dadoLinha.getAgencia() + " Conta...: " + dadoLinha.getConta() + " Via...: " + dadoLinha.getVia() + " Valor....: " +dadoLinha.getValor());
//					somaData = somaData.add(dadoLinha.getValor());
//				}
//				
//				System.out.println("..............................................................................");
//				System.out.println("Total por data         " + somaData);
//				System.out.println("..............................................................................");
//				somaTerminal = somaTerminal.add(somaData);
//			}			
//			System.out.println("..............................................................................");
//			System.out.println("Total por terminal         " + somaTerminal);
//			System.out.println("..............................................................................");
//		}

7 Respostas

E

foi mal pessoal, coloquei o código com comentário:

for (String terminal : agrupamento.keySet())
		{
			Map<Date, Collection<Dado>> mapaTerminal = agrupamento.get(terminal);
			BigDecimal somaTerminal = BigDecimal.ZERO;
			
			for (Date data : mapaTerminal.keySet())
			{												
				Collection<Dado> dados = mapaTerminal.get(data);
				System.out.println("..............................................................................");
				System.out.println("\n\nTerminal.....: " + terminal + " Data .......: " + data +"\n\n");
				System.out.println("..............................................................................");
				
				BigDecimal somaData = BigDecimal.ZERO;
				
				for (Dado dadoLinha : dados)
				{
					System.out.println("Terminal...: " + dadoLinha.getTerminal()+ "Agencia....: " + dadoLinha.getAgencia() + " Conta...: " + dadoLinha.getConta() + " Via...: " + dadoLinha.getVia() + " Valor....: " +dadoLinha.getValor());
					somaData = somaData.add(dadoLinha.getValor());
				}
				
				System.out.println("..............................................................................");
				System.out.println("Total por data         " + somaData);
				System.out.println("..............................................................................");
				somaTerminal = somaTerminal.add(somaData);
			}			
			System.out.println("..............................................................................");
			System.out.println("Total por terminal         " + somaTerminal);
			System.out.println("..............................................................................");
		}
rponte

Eu não entendi muito o que você quer fazer, ao menos não estou conseguindo visualizar como gostaria (deve ser por causa do feriado!).
Tem alguma imagem de como você gostaria que sua datatable ficasse?

E

mais ou menos assim :

Terminal 01 | Data 01/05/2008

coluna1|coluna2
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz

Terminal 01 | Data 01/05/2009

coluna1|coluna2
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz

Terminal 02 | Data 01/05/2005

coluna1|coluna2
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz

Terminal 02 | Data 01/05/2006

coluna1|coluna2
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz
XXXXX |zzzzzzz

Mais ou menos assim

rponte

Olha se os componentes do Richfaces podem te ajudar :slight_smile: Ele possui uns componentes para formatação de datatable bem bacanas!

E

meu problema não é tanto a formatação mas assim a iteração, como vou fazer a iteração da mesma maneira que fiz em Java;

rponte

Os componentes de datatable do Richfaces possuem um DataModel se não me engano, dai você pode organizar tua estrutura de acordo com o datamodel do componente, assim é possível que você consiga o que quer.

Ou você poderá utilizar um datatable dentro de outro :slight_smile:

Ou não utilizar datatable, mas sim o componente ui:repeat do Facelets ou o componente a4j:repeat (acho que é este o nome!) do Ajax4jsf.

Ou poderá gerar a tabela através de javascript mesmo.

CintiaDR

Tem o datalist, tb que repete.

E se vc quiser, pode usar iteração em java mesmo, e usar um binding por exemplo num PanelGrid…

Pra ajudar (não achei muito fácil como fazer), no jsp ficaria

&lt;h:panelGrid binding="#{meuMBean.tabela}" columns="4"/&gt;

e por exemplo, no método “getTabela” do meuMBean

private UIComponent tabela; 

public UIComponent getTabela() throws IOException {

  tabela = new UIPanel();

  HtmlOutputText outputTextNome = (HtmlOutputText) app
					.createComponent(HtmlOutputText.COMPONENT_TYPE);
  outputTextNome.setValue("texto qualquer, que vai ser uma célula inteira");
  outputTextNome.setStyleClass("cssCampo");

  tabela.getChildren().add(outputTextNome);

  return tabela;
}

public void setTabela(UIComponent tabela){
  this.tabela = tabela; 
}
Criado 21 de maio de 2008
Ultima resposta 21 de mai. de 2008
Respostas 7
Participantes 3