ManagedBen não reconhecendo propriedade[RESOLVIDO]

6 respostas
renanigt

Galera, é o seguinte, estou dando uma estudada em jsf e estou com o seguinte problema ao tentar receber uma lista...
Quando coloco para receber a lista em um dataTable por exemplo( #{usuarioBean.lista} ) recebo essa Exception:

javax.el.PropertyNotFoundException: /pages/cadastroUsuario/consultarUsuario.xhtml @24,134 value="#{usuarioBean.lista}": Property 'lista' not found on type br.com.cadastrodenoticias.bean.UsuarioBean
com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)

faces-config:
<?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>usuarioBean</managed-bean-name>
        <managed-bean-class>br.com.cadastrodenoticias.bean.UsuarioBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>usuario</property-name>
            <value>#{usuario}</value>
        </managed-property>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>usuario</managed-bean-name>
        <managed-bean-class>br.com.cadastrodenoticias.model.Usuario</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <!-- Navegação do menu cadastroNoticia -->
    <navigation-rule>
        <navigation-case>
            <from-outcome>inserirNoticia</from-outcome>
            <to-view-id>/pages/cadastroNoticia/inserirNoticia.xhtml</to-view-id>
            <redirect />
        </navigation-case>
        <navigation-case>
            <from-outcome>consultarNoticia</from-outcome>
            <to-view-id>/pages/cadastroNoticia/consultarNoticia.xhtml</to-view-id>
            <redirect />
        </navigation-case>
    </navigation-rule>
    <!-- Navegação do menu cadastroUsuario -->
    <navigation-rule>
        <navigation-case>
            <from-outcome>inserirUsuario</from-outcome>
            <to-view-id>/pages/cadastroUsuario/inserirUsuario.xhtml</to-view-id>
            <redirect />
        </navigation-case>
        <navigation-case>
            <from-outcome>consultarUsuario</from-outcome>
            <to-view-id>/pages/cadastroUsuario/consultarUsuario.xhtml</to-view-id>
            <redirect />
        </navigation-case>
    </navigation-rule>
    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>
</faces-config>
UsuarioBean:
package br.com.cadastrodenoticias.bean;

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

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.cadastrodenoticias.model.Usuario;
import br.com.cadastrodenoticias.util.HibernateUtil;
import br.com.cadastrodenoticias.util.SessionUtil;

public class UsuarioBean {
   
    private Usuario usuario = new Usuario();
    private List<Usuario> lista = new ArrayList<Usuario>();
   
    public void inserir() {
        Session session = HibernateUtil.getSession();
       
        Transaction transaction = session.beginTransaction();
       
        try {
            session.save(usuario);
            transaction.commit();
            SessionUtil.addSucessMsg("Operação realizada com sucesso !");
        } catch(Exception e) {
            transaction.rollback();
            e.printStackTrace();
            SessionUtil.addSucessMsg("Operação não realizada !");
        }
       
    }

    public List<Usuario> listarTodos() {
        Session session = HibernateUtil.getSession();
        Query q = session.createQuery("from usuario");
        List<Usuario> usuarios = q.list();
        return usuarios;
    }
   
    public List<Usuario> getLista() {
        return lista;
    }

    public void setLista(List<Usuario> lista) {
        this.lista = lista;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
   
}

Se alguém poder me ajudar, agradeço !

6 Respostas

IAX

Olá !!!

Posta por favor o código da página também!!!

anderson.bonavides

O dataTable deve estar errado. Agora posta ele aqui para poder ser analisado.

renanigt

Aí segue o código da página que chamo o método:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:a4j="https://ajax4jsf.dev.java.net/ajax">

	<ui:composition template="/template/barra.xhtml">
		<ui:define name="corpo">
			<rich:panel header="Pesquisar Notícia" styleClass="usuario">
				<a4j:form >
					<h:panelGrid columns="2">
						<h:outputText value="Nome: " />
						<h:inputText size="50"/>
						<h:outputText value="Login: " />
						<h:inputText size="12"/>
					</h:panelGrid>
					<br />
					<h:panelGrid columns="2">
						<a4j:commandButton value="Pesquisar"/>
					</h:panelGrid>
					<rich:dataTable id="usuarios" border="1" value="#{usuarioBean.lista}" var="u" reRender="#{not empty alunoBean.lista}" rows="10">
						<rich:column>
							<f:facet name="header">
								<h:outputText value="Id" />
							</f:facet>
							<h:outputText value="#{u.id}" />
						</rich:column>
						<rich:column>
							<f:facet name="header">
								<h:outputText value="Nome" />
							</f:facet>
							<h:outputText value="#{u.nome}" />
						</rich:column>
						<rich:column>
							<f:facet name="header">
								<h:outputText value="Login" />
							</f:facet>
							<h:outputText value="#{u.login}" />
						</rich:column>
						<f:facet name="footer">
							<rich:datascroller />
						</f:facet>
					</rich:dataTable>
				</a4j:form>
			</rich:panel>
		</ui:define>
	</ui:composition>

</html>
renanigt

O problema já foi resolvido, me ajudaram num lista de discussão sobre JSF !
O problema está no atributo reRender, que na verdade deveria ser rendered, pois os dois tem objetivos distintos !

Vlww a todos !

renanigt

Parece brincadeira, mas por um momento parecia ter dado certo, pelo menos não mostrava o dataTable mas também não retornava erro, mas olha agora:

javax.el.PropertyNotFoundException: /pages/cadastroUsuario/consultarUsuario.xhtml @24,136 rendered="#{not empty usuarioBean.lista}": Property ‘lista’ not found on type br.com.cadastrodenoticias.bean.UsuarioBean

Quando tiro o atributo rendered, o erro passa para o atributo value="#{usuarioBean.lista}" !

renanigt

Resolvido, dei um clean no projeto e tudo funcionando normal !

Criado 29 de outubro de 2009
Ultima resposta 29 de out. de 2009
Respostas 6
Participantes 3