selectOneMenu (JSF) carregando do BD [Resolvido]

5 respostas
V

Bom dia estou comecando a utilizar JSF agora e baixei um material que ensina a usar algums componentes.
Estou tentando seguir o modelo mostrado nesse material para seguir com o cronograma do mesmo, mas ocorre um erro quando tento puxar os valores da tabela do BD(postgreSql) para o meu . A menssagem de erro está abaixo, logo apóis os códigos dos arquivos envolvidos no erro.
Toda ajuda é bem-vinda.

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
   <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xi="http://www.w3.org/2001/XInclude"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

<managed-bean>
    <managed-bean-name>EntradaCli_BB</managed-bean-name>
    <managed-bean-class>br.com.cc.controller.EntradaCli_BackingBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean>

</faces-config>
EntradaCli_BackingBean
package br.com.cc.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import org.hibernate.Session;

import br.com.cc.model.bean.PrimContato;
import br.com.cc.model.dao.HibernateDao;
import br.com.cc.model.dao.InterfaceDao;
import br.com.cc.util.HibernateUtil;

public class EntradaCli_BackingBean {
	
	public List<SelectItem> getPrimContatos(){
		
		Session session = HibernateUtil.getSessionfactory().openSession();
		session.beginTransaction();
		
		InterfaceDao<PrimContato> pContDao = new HibernateDao<PrimContato>(PrimContato.class,session);
		List<PrimContato> pConts = pContDao.getBeans();
		
		session.getTransaction().commit();
		
		List<SelectItem> selectPrimCont = new ArrayList<SelectItem>();
		for(PrimContato pContato: pConts){
			selectPrimCont.add(new SelectItem(pContato.getId_prim_contato().toString(), pContato.getNome_prim_c() ));
		}
		return selectPrimCont;
		
	}

}
PaginaWeb
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Entrada de clientes</title>
</head>
<body>
    <f:view>
        <h:outputText value="Minha primeira página JSF"></h:outputText>
        <h:selectOneMenu id="selectPrimContato">
            <f:selectItems value="#{EntradaCli_BB.PrimContatos}" />  
        </h:selectOneMenu>
    </f:view>
</body>
</html>

Quando eu inicio meu servidor (apache TomCat 6.0) e acesso a página pelo navegador aparece o seguinte erro:
An Error Occurred:
Exception while calling encodeEnd on component : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /entrada_cliente.jsp][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: selectPrimContato]}

Caused by:
org.apache.jasper.el.JspPropertyNotFoundException - /entrada_cliente.jsp(15,12) '#{EntradaCli_BB.PrimContatos}' Property 'PrimContatos' not found on type br.com.cc.controller.EntradaCli_BackingBean

Se alguém puder me ajudar dizendo onde eu errei e como faço certo eu ficaria grato.
Obrigado pela atencao de todos.

5 Respostas

P

Isso tudo quer dizer: Você deve possuir um atributo declarado em seu Bean…

private List<SelectItem> PrimContatos;
R
Puka:
Isso tudo quer dizer: Você deve possuir um atributo declarado em seu Bean...
private List<SelectItem> PrimContatos;

E também ter os getters e setters declarados

V

Com o atributo implementado no meu Bean (EntradaCli_BackingBean) e com o get e set do mesmo continua dando o mesmo erro laguém sabe oque pode ser ?
O Bean ficou assim:

EntradaCli_BackingBean
package br.com.cc.controller;

import java.util.ArrayList; ...

public class EntradaCli_BackingBean {
	

	private List<SelectItem> PrimContatos;

	public List<SelectItem> getPrimContatos() {
	    Session session = HibernateUtil.getSessionfactory().openSession();
		session.beginTransaction();
		
		InterfaceDao<PrimContato> pContDao = new HibernateDao<PrimContato>(PrimContato.class,session);
		List<PrimContato> pConts = pContDao.getBeans();
		
		session.getTransaction().commit();
		
		List<SelectItem> selectPrimCont = new ArrayList<SelectItem>();
		for(PrimContato pContato: pConts){
			selectPrimCont.add(new SelectItem(pContato.getId_prim_contato().toString(), pContato.getNome_prim_c() ));
		}
		PrimContatos = selectPrimCont;
		return PrimContatos;
	}

	public void setPrimContatos(List<SelectItem> primContatos) {
		PrimContatos = primContatos;
	} 

}

Estou precisando acertar isso o mais rápido possivel impaquei, quem puder me ajudar fico agradecido.
Obrigado pela atencao

L.Bach
<f:selectItems value="#{EntradaCli_BB.PrimContatos}" />

Coloca o PrimContatos em minúscula, e certamente vai funcionar.

<f:selectItems value="#{EntradaCli_BB.primContatos}" />
V

falta de atencao minha por besteira … obrigadao funcionou perfeitamente…

Criado 22 de junho de 2011
Ultima resposta 22 de jun. de 2011
Respostas 5
Participantes 4