Olá pessoal,
Tenho uma dúvida. Estou implementando um sistema Web usando VRaptor e Hibernate que gere consultas sql personalizadas.
Ex: O Usuário escolhe quais campos deseja consultar e o sistema retorna esses valores do banco de dados.
A parte de pegar os campos que o usuário escolheu e fazer a consulta eu ja fiz. O problema é na hora de exibir…
Na página onde será exibido a lista da consulta eu passo a lista de produtos e uma lista de Strings com o nome dos atributos que o usuário escolheu.
Controller:
@Get("/produtos/atributos")
public List<Produto> buscaEspecifica(List<String> atributos){
List<Produto> lista = dao.busca1(atributos);
result.include("atributos", atributos);
return lista;
}
Dao:
public List<Produto> busca1(List<String> atributos){
ProjectionList projectionList = Projections.projectionList().create();
for(int i = 0 ; i< atributos.size() ; i++)
projectionList.add((Projections.property(atributos.get(i)).as(atributos.get(i))));
Criteria c = session.createCriteria(Produto.class).setProjection(projectionList)
.setResultTransformer(new AliasToBeanResultTransformer(Produto.class));
List<Produto> lista = c.list();
return lista;
}
Eu queria saber como eu posso exibir apenas os atributos que foram escolhidos pelo usuário.
Tentei isso aqui mas não funcionou.
<c:forEach items="${produtoList}" var="produto">
<tr>
<c:forEach items="${atributos}" var="atributo">
<td>${produto.${atributo}}</td>
</c:forEach>
</tr>
</c:forEach>
Estou procurando uma solução porque ao fazer a consulta, alguns atributos de produto ficam null.
Ex: Tenho a classe Produto com id, nome, descricao, preco. Se eu escolher os atributos nome e descricao para a consulta, o id e o preco ficam null.
E eu quero mostrar só os campos escolhidos pelo usuário.