Group by com JSTL?

6 respostas
H

Boa noite,
Tenho um xml que tem seus nodes percorridos usando JSTL + XPath e me retorna o conteudo dos nodes na minha jsp.
Minha dúvida é se existe alguma forma de agrupar os resultados repetidos usando JSTL.

Sou novo aqui, caso não tenha explicado bem, por favor me avisem que tento esclarecer minha duvida.
Grato desde já.

HeapMan

6 Respostas

lele_vader

JSTL tem um foreach.
Só não sei se funciona com o que você quer, pois ele se utiliza de variáveis.

H

@lele_vader
Primeiramente , obrigado pela resposta.

Atualmente estou usando o forEach, só que ainda não consegui fazer ele retornar o resultado agrupando as ocorrências que estiverem repetidas…
:frowning:

E

existem diversas formas de agrupar
voce pode agrupar com um hashmap ou fazendo um select no banco ou criando uma logica pra montar o arraylist e depois vc passa pro foreach

H

@eduJava
Obrigado pela resposta.

Vou pesquisar aqui e posto se conseguir implementar uma solução!

:smiley:

davidbuzatto

Fica difícil responder uma dúvida sem um exemplo.
Teria como vc postar um exemplo do que você quer? Pode ver uma versão mais simples do seu código, junto com o XML que está sendo processado.

[]'s

H

@davidbuzatto

Segue um exemplo do meu xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<GSP VER="3.2">

<M>1700</M>

<R N="1">
	<U>www.google.com.br</U>
	<UE>www.google.com.br</UE>
	<UD>www.google.com.br</UD>
	<T>EXEMPLO1</T>
	<RK>10</RK>
	<CRAWLDATE>8 ago. 2012</CRAWLDATE>
	<ENT_SOURCE>T3-EVXRGNPTRYSQG</ENT_SOURCE>
	<S>EXEMPLO1</S>
	<LANG>pt</LANG>
	<HAS>
		<L/>
		<C SZ="26k" CID="zOJZZX8nh7gJ" ENC="UTF-8"/>
	</HAS>
	</R>
	
	<R N="2">
	<U>www.google.com.br</U>
	<UE>www.google.com.br</UE>
	<UD>www.google.com.br</UD>
	<T>EXEMPLO2</T>
	<RK>10</RK>
	<CRAWLDATE>8 ago. 2012</CRAWLDATE>
	<ENT_SOURCE>T3-EVXRGNPTRYSQG</ENT_SOURCE>
	<S>EXEMPLO2</S>
	<LANG>pt</LANG>
	<HAS>
		<L/>
		<C SZ="23k" CID="fAcBx-wm-osJ" ENC="UTF-8"/>
	</HAS>
	</R>
	
	<R N="3">
	<U>www.google.com.br</U>
	<UE>www.google.com.br</UE>
	<UD>www.google.com.br</UD>
	<T>EXEMPLO1</T>
	<RK>10</RK>
	<CRAWLDATE>8 ago. 2012</CRAWLDATE>
	<ENT_SOURCE>T3-EVXRGNPTRYSQG</ENT_SOURCE>
	<S>EXEMPLO3</S>
	<LANG>pt</LANG>
	<HAS>
		<L/>
		<C SZ="16k" CID="F8IHaCwf8REJ" ENC="UTF-8"/>
	</HAS>
	
</GSP>

forEach que percorre meu xml:

<x:forEach select="$resultadoBusca//RES/R">
		<div class="resultBusca">
			<div class="resultTitulo"><x:out select="T"/></a></div>
		</div>
</x:forEach>

No Xml, cada representa um resultado.
O que eu quero fazer exatamente, é por exemplo se houver algum conteúdo do elemento repetido nos resultados, que eles fiquem agrupados.

Exemplo:
Ao rodar o código acima ele iria listar o seguinte:

EXEMPLO1
EXEMPLO2
EXEMPLO1

Exemplo de como deveria ficar:

EXEMPLO1
EXEMPLO2

Espero que agora eu tenha sido mais claro!

Criado 6 de agosto de 2012
Ultima resposta 8 de ago. de 2012
Respostas 6
Participantes 4