JSF Problemas com o Bean

9 respostas
V

Pessoal,

Tá dando um erro louco aqui que não consegui identificar o que pode ser

javax.servlet.ServletException: Não foi possível criar o bean gerenciado questaoSubjetiva.  Os seguintes problemas foram encontrados:
     - O bean ou a classe da propriedade br.com.vteste.validadores.questoes.SubjetivaMB do bean gerenciado questaoSubjetiva não pôde ser encontrada.
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)


root cause 

com.sun.faces.mgbean.ManagedBeanCreationException: Não foi possível criar o bean gerenciado questaoSubjetiva.  Os seguintes problemas foram encontrados:
     - O bean ou a classe da propriedade br.com.vteste.validadores.questoes.SubjetivaMB do bean gerenciado questaoSubjetiva não pôde ser encontrada.

Alguém poderia me ajudar?

Não vejo porque ele não está encontrando pois o bean já está no faces-config e a classe no pacote correto

9 Respostas

W

Cara eu desenvolvo em jsf a um bom tempo e nunca ocorreu um erro assim, mas pelo que esta dizendo ai tem algum problema no teu Bean, vc criou os gets e sets dos atributos? O teu diretório direcionado certo! Vc criou o método construtor da classe! Da uma olhada nisso e se não conseguir posta o código do bean para dar uma olhada e o faces-config quem sabe dai podemos te ajudar mais. Valeu!

Wolmir Garbin!

V

wolmirGarbin:
Cara eu desenvolvo em jsf a um bom tempo e nunca ocorreu um erro assim, mas pelo que esta dizendo ai tem algum problema no teu Bean, vc criou os gets e sets dos atributos? O teu diretório direcionado certo! Vc criou o método construtor da classe! Da uma olhada nisso e se não conseguir posta o código do bean para dar uma olhada e o faces-config quem sabe dai podemos te ajudar mais. Valeu!

Wolmir Garbin!
http://wolmirgarbin.wordpress.com

Já tentei o máximo que poderia pra achar uma solução e não vejo por mim mesmo uma então vou mandar os códigos pra ver se você pode me ajudar.

Já criei os gets e sets dos atributos, diretório correto e método construtor ok.

//ESTA É A TELA
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<html>
	<head>
<title>..::Virtual Teste - Seu Ambiente de Avaliação 

Virtual::..</title>
</head>
<body>

<div style="margin-left: 200px; margin-right: 200px">
<f:view >
		
		<style>
			.topo{				
				width: 800px;
			}
			.corpo{
				width:800px;
			}
		</style>
		
		<h:graphicImage id="topo" 

value="/images/topo.jpg"/>
		<rich:panel styleClass="corpo">
        	<f:facet name="header" >
        		<h:outputText value="QUESTÃO SUBJETIVA"/>
        	</f:facet>
        	<br>
        	
        			&lt;style&gt;
						.label{
						font-weight:bold;
						}
						.pbody{
						    width:200px;
						}
					&lt;/style&gt;				        					        
		            &lt;rich:tabPanel width="50%"&gt;
     					&lt;rich:tab label="Inclua a Questão!"&gt;
						
						&lt;rich:panel bodyClass="pbody" style=" width : 578px;"&gt;		                
		                &lt;h:form style="width:250%"&gt;	                
		                
				                &lt;h:outputText value="Comando da Questão" styleClass="label"&gt;&lt;/h:outputText&gt;<br>
				                &lt;h:inputTextarea value="#{questaoSubjetiva.questao.comando}" style="height : 82px; width : 494px;"/&gt;<br><br>
				                    
				                &lt;h:outputText value="Texto Complementar? (Não Obrigatório!)" styleClass="label"&gt;&lt;/h:outputText&gt;<br>
				                &lt;h:inputTextarea value="#{questaoSubjetiva.questao.textoComplementar}" style="height : 81px; width : 496px;"/&gt;<br><br>
				                
				                &lt;h:outputText value="Citação (Não Obrigatório!)" styleClass="label"/&gt;<br>
				                &lt;h:inputText value="#{questaoSubjetiva.questao.citacao}" style=" width : 500px;"/&gt;<br><br>		                    
				                    
				                &lt;h:outputText value="Descreva um Assunto Principal" styleClass="label"/&gt;<br>
				                &lt;h:inputText value="#{questaoSubjetiva.questao.assuntoPrincipal}" style=" width : 500px;"/&gt;<br><br>			                
				                						        
					    &lt;h:commandButton image="/images/proxima.jpg"
												 	 action="#{questaoSubjetiva.inserirProximaQuestao}" 
												 	 style="height : 37px; width : 66px;" 
												 	 alt="Próxima Questão"/&gt;								
		                	    
		                	    &lt;h:commandButton image="/images/salvar.jpg"
												 	 action="#{questaoSubjetiva.salvarQuestoes}" 
												 	 style="height : 37px; width : 77px;" 
												 	 alt="Salvar Questões"/&gt;								
		                	    
		                				
						
		                &lt;/h:form&gt;
		                
		                
		            &lt;/rich:panel&gt;
		            &lt;/rich:tab&gt; 
		            
		            &lt;/rich:tabPanel&gt;

        		
        	&lt;/rich:panel&gt;
        
		&lt;h:graphicImage value="/images/base.jpg"/&gt;    

    
        
&lt;/f:view&gt;
&lt;/div&gt;

	&lt;/body&gt;	
&lt;/html&gt;  

//Este é meu Managed Bean
package br.com.vteste.validadores.questoes;

import java.util.LinkedList;
import java.util.List;
import br.com.vteste.dao.questoes.QuestaoSubjetivaDao;
import br.com.vteste.modelos.Questao;
import br.com.vteste.modelos.QuestaoSubjetiva;

public class SubjetivaMB {

	//Objetos que o bean gerencia
        private QuestaoSubjetiva questao;
	private List&lt;QuestaoSubjetiva&gt; questoes;
	private String tipoQuestao;
	private QuestaoSubjetivaDao dao;
	

        //CONSTRUTOR: ACREDITO QUE ESTEJA OK
	public SubjetivaMB(){
		questao = (QuestaoSubjetiva) new Questao();
		questoes = new LinkedList&lt;QuestaoSubjetiva&gt;();		
	}
	
	public String inserirProximaQuestao(){
		
		//RECUPERANDO DADOS INSERIDOS PELO USUÁRIO E TESTES
		System.out.println("COMANDO: "+questao.getComando());
		questoes.add(this.questao);
		
		this.questao = new QuestaoSubjetiva();
		System.out.println(questao.getComando());
		System.out.println("*********************");
		
		return "/pages/professor/incluirQuestoes/incluirQuestaoSubjetiva.jsf";
	}
	
	
	public String salvarQuestoes(){
		return "";
	}
	
	
	public QuestaoSubjetiva getQuestao() {
		return questao;
	}


	public void setQuestao(QuestaoSubjetiva questao) {
		this.questao = questao;
	}


	public List&lt;QuestaoSubjetiva&gt; getQuestoes() {
		return questoes;
	}


	public void setQuestoes(List&lt;QuestaoSubjetiva&gt; questoes) {
		this.questoes = questoes;
	}


	public QuestaoSubjetivaDao getDao() {
		return dao;
	}


	public void setDao(QuestaoSubjetivaDao dao) {
		this.dao = dao;
	}

        public String getTipoQuestao() {
		return tipoQuestao;
	}

	public void setTipoQuestao(String tipoQuestao) {
		this.tipoQuestao = tipoQuestao;
	}

}




//O FACES CONFIG ESTÁ DESTA FORMA

&lt;managed-bean&gt;
  &lt;managed-bean-name&gt;questaoSubjetiva&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.vteste.validadores.questoes.SubjetivaMB&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;

//E ESTA É CLASSE COM AS PROPRIEDADES
package br.com.vteste.modelos;

public class QuestaoSubjetiva extends Questao {
	
	private String citacao;
	
	public String getCitacao() {
		return citacao;
	}
	public void setCitacao(String citacao) {
		this.citacao = citacao;
	}
}

//CLASSE QUESTAO
package br.com.vteste.modelos;

public class Questao {
	
	private int id;
	private String comando;
	private String textoComplementar;
	private String assuntoPrincipal;
	private String tipoQuestao;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getComando() {
		return comando;
	}
	public void setComando(String comando) {
		this.comando = comando;
	}
	public String getTextoComplementar() {
		return textoComplementar;
	}
	public void setTextoComplementar(String textoComplementar) {
		this.textoComplementar = textoComplementar;
	}
	public String getAssuntoPrincipal() {
		return assuntoPrincipal;
	}
	public void setAssuntoPrincipal(String assuntoPrincipal) {
		this.assuntoPrincipal = assuntoPrincipal;
	}
	public String getTipoQuestao() {
		return tipoQuestao;
	}
	public void setTipoQuestao(String tipoQuestao) {
		this.tipoQuestao = tipoQuestao;
	}

}

Cara é isso, tomara que você possa me ajudar, simplesmente estanquei nessa parte
Valeu

A

estranho… tenta alterar o nome da questaoSubjetiva no mapeamento no faces…
só para teste mesmo…

V

alves.Felipe:
estranho… tenta alterar o nome da questaoSubjetiva no mapeamento no faces…
só para teste mesmo…

Estranho? Pois entranho nisso!

anteriormente era subjetiva, alterei pra questaoSubjetiva tendo essa idéia mas o erro persistiu!

Aparentemente está certo não é?

Tu testou esse código?

L
questao = (QuestaoSubjetiva) new Questao();

Cara aki vc faz um cast de quetao para questao subjetiva ,e no obejo questao vc naum tem o atributo citacao e vc o usa na pagina, tente fazer assim:

private QuestaoSubjetiva questao;
questao =  new QuestaoSubjetiva();

Ou remova o atributo citacao da sua pagina ,testa ai .

V
lgweb:
questao = (QuestaoSubjetiva) new Questao();
Cara aki vc faz um cast de quetao para questao subjetiva ,e no obejo questao vc naum tem o atributo citacao e vc o usa na pagina, tente fazer assim:
private QuestaoSubjetiva questao;
questao =  new QuestaoSubjetiva();
Ou remova o atributo citacao da sua pagina ,testa ai .

Valeu pessoal por toda a ajuda mas consegui resolver o problema de uma forma inesperada.

Simplesmente criei outro workspace desinstalei e reinstalei o TOMCAT

Transferi as classes e tela que estavam dando erro no workspace anterior e ...

Deu certo! Bug da ferramenta ou sei o que!

Depois transferi as outras classes e telas do projeto anterior e tudo funcionou bem!

Valeu pessoal, FALOW

A

eu estou com exatamento o mesmo problema

GRAVE: O JSF estará indisponível para criar o bean gerenciado usuarioController quando ele for solicitado. Os seguintes problemas foram encontrados: - O bean ou a classe da propriedade br.com.targettrust.controller.UsuarioController do bean gerenciado usuarioController não pôde ser encontrada.

depois de me quebrar procurando erros no código, descobri que se eu clicar com o botão direito no projeto e ir em “Limpar e Construir” ele roda normal.

só que se eu fizer qualquer alteração e clicar no RUN direto, volta esse erro, e tenho que ir de novo em “Limpar e Construir”

alguem sabe pq isso ocorre e se tem algo para automatizar isso? toda vez que mudo uma virgula, tenho que limpar e construir.

uso o netbean 6.91

W

Bom assim… eu utilizo o eclipse ai sempre q estarto o servidor ele faz esse limpar e construir q nada mais é do que gerar as classes apartir dos .java,
no net Beans não sei se tem algum geito mais facil de fazer isso… acredito q o unico geito seja esse.

Wolmir C Garbin.

C

Senhores, eu estava com este mesmo problema, porém eu usava JBOSS AS 6 e Eclipse Helios para desenvolver.
Para resolver o problema eu efetuei “Clean” dos Projetos e ativei o “Build Automatically”.

Abrs,

Criado 31 de agosto de 2010
Ultima resposta 29 de jun. de 2011
Respostas 9
Participantes 6