Exibir dados JSF

4 respostas
D

Olá pessoal, desejo exibir os dados que tenho no meu BD em uma tabela usando JSF.

Ao clicar no link que abrirá a página que exibirá os dados, o console no Eclipse mostra que o Hibernate funcionou legal e retornou os dados do BD. O que não consigo é colocá-los na página. vejam o que já fiz.

Página JSP

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<head>
<title></title>
</head>
<body>
<f:view>
	<h:form id="frm">
		<h:dataTable value="#{palavrasBean.consultar}" var="item">
			<h:column>
				<f:facet name="header">
					<h:outputText value="Id" />
				</f:facet>
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Palavra" />
				</f:facet>
				<h:outputText value="#{item.palavra}" />
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Tradução" />
				</f:facet>
				<h:outputText value="#{item.traducao}" />
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Idioma" />
				</f:facet>
				<h:outputText value="#{item.idioma}"></h:outputText>
			</h:column>
		</h:dataTable>
	</h:form>
</f:view>
</body>
</html>

Onde chamo no bean:

private List<Palavras> listaPalavras= new ArrayList<Palavras>();
	
public void consultar(ActionEvent event) {
		this.listaPalavras = new PalavrasService().buscar();
	}

public List<Palavras> getListPalavras(){
		return listaPalavras;
	}

O que pode estar errado?

Obrigado

4 Respostas

fabiomedeirosf

altere isto:

<h:dataTable value="#{palavrasBean.listaPalavas}" var="item">

caso vc queira que a tabela seja apresentada no carregamento da página, faça isto com seu método consultar:

/**
 * Construtor
**/
public PalavrasBean() {
consultar();
}

public void consultar() {  
        this.listaPalavras = new PalavrasService().buscar();  
   }

no value do dataTable, deve ser passado a lista que será iterada.

otaviojava

Você tem que tornar seu bean gerencial.
Se for jsf 2.0

@ManagedBean
@RequestScoped
public class PalavrasBean

Caso seja a jsf 1.2 você terá que configurar no xml no faces-config.xml se eu enganado é esse o nome.

D

fabiomedeirosf:
altere isto:

<h:dataTable value="#{palavrasBean.listaPalavas}" var="item">

caso vc queira que a tabela seja apresentada no carregamento da página, faça isto com seu método consultar:

/**
 * Construtor
**/
public PalavrasBean() {
consultar();
}

public void consultar() {  
        this.listaPalavras = new PalavrasService().buscar();  
   }

no value do dataTable, deve ser passado a lista que será iterada.

Para eu remover o argumento do método consultar, na chamada desse método na pagina inicial não funciona, pois chamo no actionListener. Teria alguma outra forma para chamá-lo sem o actionListener?

fabiomedeirosf

Tem sim… vc pode chamar pelo action do componente.

Por exemplo, imagine que a tabela seja carregada qdo vc clicar num botao chamado CarregarTabela:

<h:commandButton value="Carregar tabela" action="#{pessoaBean.consultar}" />

O botao chamará o metodo sem a necessidade do actionListener, pq como no exemplo que vc mostrou, este actionListener nem chega a ser usado.

Espero que eu tenha entendido…

Criado 11 de janeiro de 2011
Ultima resposta 11 de jan. de 2011
Respostas 4
Participantes 3