Duvida em um selectonemenu

14 respostas
Matheus_Paiva
Pessoal estou com uma duvida em um selectonemenu ... Pois quero que o mesmo retorne para uma tela na qual será escolhida o acesso do usuario ( em qual ) Será que alguem pode me ajudar ? Vou postar os codigos ...
public class UsuarioMB {
    
private Usuario usuario;
private List<Usuario> usuarios;
private List<SelectItem> selectItems;


    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    public List<SelectItem> getSelectItems() {
        return selectItems;
    }

    public void setSelectItems(List<SelectItem> selectItems) {
        this.selectItems = selectItems;
    }

    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    /** Creates a new instance of UsuarioMB */
    public UsuarioMB(){ 
            
    this.usuario=new Usuario();
//    carregaVaras();
    fillSelectItems();
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    public String excluir() {
        UsuarioDAO uDAO = new UsuarioDAO();
        try {
            uDAO.deletar(usuario);
            JSFUtil.setaMensagemInfo("Exclusão efetuada com sucesso");
//            listar();

        } catch (Exception ex) {
            JSFUtil.setaMensagemInfo("Erro na exclusão: " + ex.getMessage());

        }
        return null;

    }
    public String limpar() {
        usuario = new Usuario();
        
        return null;
    }
  
    public String listar(){
    UsuarioDAO uDAO = new UsuarioDAO();

    usuarios=uDAO.listar();
    uDAO.getConexao().close();
    return "listar";
}
    public String buscar(){

    return "buscar";
}
    
         public String cadastrar(){
             UsuarioDAO uDAO=new UsuarioDAO();
        
       
        
        if (usuario.getNomeUsuario().equals(""))
     {
            usuario.setNomeUsuario(null);
     }
        try 
    {
         uDAO.inserirEditar(usuario);
         limpar();
         JSFUtil.setaMensagemInfo("Cadastro/Edição efetuado com sucesso!");
        
         uDAO.getConexao().close();
    }    catch (Exception e) {
         JSFUtil.setaMensagemError("Erro no cadastro: "+e.getMessage());
         uDAO.getConexao().getTransaction().rollback();
    }
        return null;
    }
      
         private void fillSelectItems() {
       carregaVaras();       
}
         
 private void carregaVaras() 
 {
        UsuarioDAO uDAO = new UsuarioDAO();

        selectItems = new ArrayList<SelectItem>();

       selectItems.add(new SelectItem(null,"[Selecione]"));
        for (Usuario u : uDAO.listarVara()) {

            selectItems.add(new SelectItem(u.getCodUsuario(),u.toString()));
            
        }
    }

    public List listarVaras(){
UsuarioDAO udao=new UsuarioDAO();
Usuario u = new Usuario();
    if (u.getAtributos().equals('0')){
   return udao.listarVara();

}
    return udao.listar();

}
        
        
}
public class UsuarioDAO extends GenericDAO<Usuario, Integer> {

    
    public Class getEntityClass() {
        return Usuario.class;
    }
    
     public Usuario autenticaLogin(Usuario usuario) throws Exception {
       
            Query dynaquery = super.getConexao().createQuery("FROM Usuario u Where u.login=:param1");
            dynaquery.setParameter("param1", usuario.getCodUsuario());
           

            usuario=(Usuario)dynaquery.getSingleResult();

            return usuario;
        



    }
     
    public List<Usuario> listarVara() {

        Query dynaQuery = getConexao().createQuery("FROM Usuario where vara is not null ");
        return dynaQuery.getResultList();
    }
}
<label for="usuario">Usuário</label>
        </td><td>
                                             <h:selectOneMenu id="usuario_return" value="#{usuarioMB.usuario.vara}">
                                                 <f:selectItems value="#{usuarioMB.selectItems}" />
                                    
                                </h:selectOneMenu>

                                 </td>
                                </tr>
                          </td>
StackTrace
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.ExceptionInInitializerError
br.jus.jfba.utils.jpa.JPAUtil.(JPAUtil.java:33)
br.jus.jfba.utils.jpa.dao.GenericDAO.getConexao(GenericDAO.java:53)
DAO.UsuarioDAO.listarVara(UsuarioDAO.java:40)
MB.UsuarioMB.carregaVaras(UsuarioMB.java:125)
MB.UsuarioMB.(UsuarioMB.java:47)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
java.lang.Class.newInstance0(Class.java:355)
java.lang.Class.newInstance(Class.java:308)
com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:277)
com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:546)
com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
org.apache.el.parser.AstValue.getValue(AstValue.java:147)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
javax.faces.component.UISelectItems.getValue(UISelectItems.java:130)
com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:323)
com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

javax.persistence.PersistenceException: [PersistenceUnit: jfbaPU] Unable to build EntityManagerFactory
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
br.jus.jfba.utils.jpa.JPAUtil.(JPAUtil.java:29)
br.jus.jfba.utils.jpa.dao.GenericDAO.getConexao(GenericDAO.java:53)
DAO.UsuarioDAO.listarVara(UsuarioDAO.java:40)
MB.UsuarioMB.carregaVaras(UsuarioMB.java:125)
MB.UsuarioMB.(UsuarioMB.java:47)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
java.lang.Class.newInstance0(Class.java:355)
java.lang.Class.newInstance(Class.java:308)
com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:277)
com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:546)
com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
org.apache.el.parser.AstValue.getValue(AstValue.java:147)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
javax.faces.component.UISelectItems.getValue(UISelectItems.java:130)
com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:323)
com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

org.hibernate.HibernateException: Errors in named queries: Tabusuario.findByAssdigital, Tabusuario.findByVara, Tabusuario.findByAtributos, Tabusuario.findByUsuario, Tabusuario.findByDesignaPericia, Tabusuario.findByExcluiPericia, Tabusuario.findByNomeUsuario, Tabusuario.findByNucod, Tabusuario.findByUltAcesso, Tabusuario.findByAltPerito, Tabusuario.findBySenha, Tabusuario.findByVarasacessos, Tabusuario.findByCargo, Tabusuario.findAll, Tabusuario.findByCodUsuario
org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:365)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
br.jus.jfba.utils.jpa.JPAUtil.(JPAUtil.java:29)
br.jus.jfba.utils.jpa.dao.GenericDAO.getConexao(GenericDAO.java:53)
DAO.UsuarioDAO.listarVara(UsuarioDAO.java:40)
MB.UsuarioMB.carregaVaras(UsuarioMB.java:125)
MB.UsuarioMB.(UsuarioMB.java:47)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
java.lang.Class.newInstance0(Class.java:355)
java.lang.Class.newInstance(Class.java:308)
com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:277)
com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:546)
com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
org.apache.el.parser.AstValue.getValue(AstValue.java:147)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
javax.faces.component.UISelectItems.getValue(UISelectItems.java:130)
com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:323)
com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


se alguem puder me ajudar ... desde já sou grato ...

O erro que dá é ...

javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

14 Respostas

Matheus_Paiva

Utilizando JPA 1.0 e JSF 1.2

fabiomedeirosf

Certamente vc gerou suas entidades pelo netbeans… o NB gera namedQueries, anotações em cima de cada entidade, é como se fosse as queries mais comuns que podem ser utilizadaspor vc, tipo um findbyId, select * from, etc…

Pois bem, qdo vc sobe sua aplicação essas queries são validadas; o que certamente houve, foi que o NB gerou as queries e atributos e vc renomeou algum atributo da entidade mas nao observou que alguma namedQuerie fazia referência a este atributo, verifique isto.

[]s

Matheus_Paiva

Sim foi o netbeans que gerou automaticamente …
Mas eu não mudei o nome de nada … está tudo como ele mesmo criou …
Ou seja nenhum atributo foi renomeado…nem o atributo de uma entidade …

Matheus_Paiva

Inclusive foi o dao e bean foram gerado logo apos do netbeans gerar automaticamente a class …

Matheus_Paiva

Será que alguem pode me ajudar ?
Desde já …Obrigado …

Rodrigo_Vieira_Pinto

A raiz da exceção é um erro relacionado ao hibernate. Você já testou seus DAOs?

Matheus_Paiva

Sim cara … testei todos os meus DAOS …

marlonmca

olhando seu stack tenho a impressão que o problema está na configuração de alguma dentro desse método. Talvez o persistense, não sei. Dá uma olhada de perto nele ou manda o código aqui para o fórum.

Método: br.jus.jfba.utils.jpa.dao.GenericDAO.getConexao(GenericDAO.java:53)

Tô chutando essa solução pra ver se acende uma luz no fim do túnel.

Matheus_Paiva
public abstract class GenericDAO <T, ID extends Serializable> {



    public GenericDAO() {

    }

     public abstract Class<T> getEntityClass();


    public T inserirEditar(T vo) {

        EntityTransaction tx = getConexao().getTransaction();

        if (!tx.isActive()) {
            tx.begin();
        }

        vo = getConexao().merge(vo);



        if (tx.isActive()) {
            tx.commit();
        }

        return vo;

    }


    public EntityManager getConexao() {
        return JPAUtil.getEntityManager();
    }


    public void deletar(T vo) throws Exception {
        try {
            EntityTransaction tx = getConexao().getTransaction();

            if (!tx.isActive()) {
                tx.begin();
            }

            vo = getConexao().merge(vo);

            getConexao().remove(vo);

            if (tx.isActive()) {
                tx.commit();
            }

        } catch (Exception ex) {
            ex.printStackTrace();
            if (ex.getCause() instanceof ConstraintViolationException) {
                throw new ConstraintViolationException(null, null, null);
            }
        }

    }


    public T buscar(ID id) {

        T entidade = getConexao().find(getEntityClass(), id);

        return entidade;

    }

    public List<T> listar() {

        Query dynaQuery = getConexao().createQuery("FROM " + getEntityClass().getName());
        return dynaQuery.getResultList();
    }


}
Matheus_Paiva

marlonmca postei a class genericDAO

Matheus_Paiva
O erro  mudou  …

Agora  é :<blockquote>javax.servlet.ServletException: Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectOne(usuario_vara).  Found null.

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

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)</blockquote>

quando eu refiz o persistence … o faces-config e depois de eu seguir o que vi no forum que era uma instrução de criar um construtor cheio e um vazio …

agora ele para nesse erro … alguem pode me ajudar ?

Matheus_Paiva
Meu mb agora ficou ......
public class UsuarioMB {
    
private Usuario usuario;
private List<Usuario> usuarios;
private List<SelectItem> selectItems;
/** Creates a new instance of UsuarioMB */
 


public UsuarioMB(){}
public UsuarioMB(Usuario usuario){ 
            
    this.usuario=new Usuario();
//    carregaVaras();
    fillSelectItems();
    }

    public Usuario getUsuario() {
        return usuario;
    }

     public List<Usuario> getUsuarios() {
        return usuarios;
    }

    public List<SelectItem> getSelectItems() {
        return selectItems;
    }

    public void setSelectItems(List<SelectItem> selectItems) {
        this.selectItems = selectItems;
    }



    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    public String excluir() {
        UsuarioDAO uDAO = new UsuarioDAO();
        try {
            uDAO.deletar(usuario);
            JSFUtil.setaMensagemInfo("Exclusão efetuada com sucesso");
//            listar();

        } catch (Exception ex) {
            JSFUtil.setaMensagemInfo("Erro na exclusão: " + ex.getMessage());

        }
        return null;

    }
    public String limpar() {
        usuario = new Usuario();
        
        return null;
    }
  
    public String listar(){
    UsuarioDAO uDAO = new UsuarioDAO();

    usuarios=uDAO.listar();
    uDAO.getConexao().close();
    return "listar";
}
    public String buscar(){

    return "buscar";
}
    
         public String cadastrar(){
             UsuarioDAO uDAO=new UsuarioDAO();
        
       
        
        if (usuario.getNomeUsuario().equals(""))
     {
            usuario.setNomeUsuario(null);
     }
        try 
    {
         uDAO.inserirEditar(usuario);
         limpar();
         JSFUtil.setaMensagemInfo("Cadastro/Edição efetuado com sucesso!");
        
         uDAO.getConexao().close();
    }    catch (Exception e) {
         JSFUtil.setaMensagemError("Erro no cadastro: "+e.getMessage());
         uDAO.getConexao().getTransaction().rollback();
    }
        return null;
    }
      
        private  void fillSelectItems() {
//       carregaVaras();  
             UsuarioDAO uDAO = new UsuarioDAO();

       selectItems = new ArrayList<SelectItem>();

       selectItems.add(new SelectItem(null,"[Selecione]"));
        for (Usuario u : uDAO.listar()) {

            selectItems.add(new SelectItem(u.getCodUsuario(),u.toString()));
            
        }
}
           
// private void carregaVaras() 
// {
//        UsuarioDAO uDAO = new UsuarioDAO();
//
//       select = new ArrayList<SelectItem>();
//
//       select.add(new SelectItem(null,"[Selecione]"));
//        for (Usuario u : uDAO.listarVara()) {
//
//            select.add(new SelectItem(u.getCodUsuario(),u.toString()));
//            
//        }
//    }

    public List listarVaras(){
UsuarioDAO udao=new UsuarioDAO();
Usuario u = new Usuario();
    if (u.getAtributos().equals('0')){
   return udao.listarVara();

}
    return udao.listar();

}}
ErickRAR

Passe uma string vazia ao invés de null no selectItens

private void carregaVaras()   
{  
        UsuarioDAO uDAO = new UsuarioDAO();  
  
        selectItems = new ArrayList<SelectItem>();  
  
                                //aqui
       selectItems.add(new SelectItem("","[Selecione]"));  
        for (Usuario u : uDAO.listarVara()) {  
  
            selectItems.add(new SelectItem(u.getCodUsuario(),u.toString()));  
              
        }  
    }

Ah, recomendo usar PostConstruct;

Matheus_Paiva

Meu caro ErickRAR o erro ainda continua …
O mesmo erro …

Criado 10 de julho de 2012
Ultima resposta 19 de jul. de 2012
Respostas 14
Participantes 5