Como usar um <h:datatable> dentro do outro?

1 resposta
manusnigro

Pessoal,

Estou estudando agora JSF, li algumas apostilas, vi alguns videos no youtube etc, mas até o momento não vi algo que é muito útil, tentei fazer e não consegui. Vou explicar melhor.

Em JSP eu consigo por exemplo, em uma tabela de Servicos que guarda o id da tabela TipoServicos, usar um for dentro do outro (ou usando while) e montar uma estrutura na tela com um titulo que vem da tabela TipoServico, e listar a baixo todos os Serviços da tabela Serviços ligado aquele código, termina, segue para o próximo tipo de serviço. O problema, como faço isso em JSF? Imaginei que eu teria que usar um DataTable dentro do outro, seria realmente isso? Tentei, porem não consigo, sempre da erro, vou postar o código aqui, se alguém puder me ajudar.

Meu método no pacote repository:

public List<Servico> getServicosSel(Long id) {
		Query query = this.entityManager.createQuery("select s from Servico as s where tipoServico_id = :id");
		query.setParameter("id", id);
		return query.getResultList();
	}

Meu método no pacote Bean:

public List<Servico> getServicosSel(TipoServico tipoServico) {
		ServicoRep servicoRep = new ServicoRep(this.entityManager);
		this.servicos = servicoRep.getServicosSel(tipoServico.getId());
		return this.servicos;
	}

O form na minha página xhtml:

<h:form>
				<h:dataTable id="tabelaprincipal" value="#{tipoServicoBean.tipoServicos}" var="tipo" width="100%">
					<h:column>
						<div class="titulo">#{tipo.tipo}</div>
						
						<h:dataTable id="tabela" value="#{servicoBean.servicosSel(tipo)}" var="servico">
							<h:column>
								<div class="texto">
									<span class="destaque"> * </span><h:commandLink styleClass="corpo_link" value="#{servico.servico}" action="#{servicoBean.procura(servico)}"/>
								</div>
							</h:column>
						</h:dataTable>
					
					</h:column>
				</h:dataTable>
			</h:form>

Não sei se seria essa a maneira correta de fazer o que estou tentando, caso seja a maneira errada, gostaria de saber qual a certa, e se estiver no caminho certo, por favor, alguém me diz porque retorna o erro abaixo:

Erro:

javax.servlet.ServletException: /servicos.xhtml @53,87 value="#{servicoBean.servicosSel(tipo)}": Unable to find method [servicosSel] with [1] parameters

javax.faces.webapp.FacesServlet.service(FacesServlet.java:521)

filtros.JPAFilter.doFilter(JPAFilter.java:22)

Todo tipo de ajuda é bem vinda.

1 Resposta

G

o form da sua pagina xhtml
voce nao passa nenhum parametro voce somente pega o retorno do metodo

o datatable como se fosse um foreach, normalmente ele e mto usado com list

Criado 17 de novembro de 2011
Ultima resposta 23 de nov. de 2011
Respostas 1
Participantes 2