JSF - DataTable

4 respostas
anderson.bonavides

Pessoal estou tentando listar as informações de um contato em um DataTable e não estou conseguindo. É a primeira vez que tento usar este componente.

Segue meu método que pega os contatos e meu DataTable:

Meu Método:

public List<SelectItem> getTodosContatos() {
	
		todosContatos = new ArrayList<SelectItem>();
		ContatoBusiness contatoBusiness = new ContatoBusiness();
		List<Contato> contato = contatoBusiness.listarContatos();
		for (Contato contato2 : contato) {
			todosContatos.add(new SelectItem(contato2));
		}
		return todosContatos;
	}
Meu DataTable:
<f:view>
	<h:dataTable id="contatos" value="#{contatoMB.todosContatos}" var="contato" border="1">
		<h:column>
			<f:facet name="header">
				<h:outputText value="Id" id="id" />
			</f:facet>
			<h:outputText value="#{contato.id}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputText value="Nome" id="nome" />
			</f:facet>
			<h:outputText value="#{contato.nome}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputText value="Email" id="email" />
			</f:facet>
			<h:outputText value="#{contato.email}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputText value="Telefone" id="telefone" />
			</f:facet>
			<h:outputText value="#{contato.telefone}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputText value="Data de Nascimento" id="nascimento" />
			</f:facet>
			<h:outputText value="#{contato.nascimento}" />
		</h:column>
	</h:dataTable>
</f:view>

Segue o erro:

org.apache.jasper.JasperException: javax.servlet.jsp.JspException: Error getting property 'id' from bean of type javax.faces.model.SelectItem
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:476)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: Error getting property 'id' from bean of type javax.faces.model.SelectItem
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:842)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.jsp.listar_jsp._jspService(listar_jsp.java:104)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)

root cause

javax.faces.el.PropertyNotFoundException: Error getting property 'id' from bean of type javax.faces.model.SelectItem
	com.sun.faces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:127)
	com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:187)
	com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:171)
	com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
	com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:160)
	com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:143)
	javax.faces.component.UIOutput.getValue(UIOutput.java:167)
	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:102)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:221)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:199)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:740)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:473)
	com.sun.faces.renderkit.html_basic.TableRenderer.encodeChildren(TableRenderer.java:277)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:721)
	javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:629)
	javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:566)
	com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:491)
	org.apache.jsp.jsp.listar_jsp._jspx_meth_h_005fdataTable_005f0(listar_jsp.java:188)
	org.apache.jsp.jsp.listar_jsp._jspx_meth_f_005fview_005f0(listar_jsp.java:130)
	org.apache.jsp.jsp.listar_jsp._jspService(listar_jsp.java:94)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.

4 Respostas

G

Porque está usando uma List de SelectItem?

anderson.bonavides

To querendo listar todos os usuários em um DataTAble. Pode ser que eu esteja errado.

O que me diz?

G

Passe direto sua List ou uma DataModel, na DataTable vc n precisa passar um SelectItem como no SelectOneMenu

anderson.bonavides

Humm entendi.

Gbzao obrigado pela força.

Queria agradecer ao meu amigo Marcelo que tira muitas dúvidas minhas em JSF.

Grato!

Criado 21 de julho de 2008
Ultima resposta 21 de jul. de 2008
Respostas 4
Participantes 2