Meu bean não é encontradopela aplicação (estudando jsf)

4 respostas
maior_abandonado

ola… obrigado antes de tudo…

estou estudando jsf aqui, tenho um bean declarado no faces-config.xml, segue trecho do faces-config.xml:

<managed-bean>
        <managed-bean-name>
            validaForm
        </managed-bean-name>

        <managed-bean-class>
            beans.validaForm
        </managed-bean-class>

        <managed-bean-scope>
            session
        </managed-bean-scope>
    </managed-bean>

    <navigation-rule>
        <from-view-id>
            /formularioJSF.java
        </from-view-id>

         ...
     </navigation-rule>

trecho do meu jsp:

<f:view>
            <h:form id="idFormulario">
                <h:inputText alt="digite seu nome" id="idNome"
                required="true" value="#{validaForm.nome}"/>

                <h:commandButton id="idBotao" alt="clique para enviaar seu nome"
                action="#{validaForm.acao}" value="enviar" /&gt;<br/><br/>

                &lt;h:messages/&gt;
            &lt;/h:form&gt;
        &lt;/f:view&gt;

ao tentar executar esse jsp ai pelo netbeans, aparece o seguinte erro:

javax.faces.FacesException: Cant instantiate class: beans.validaForm.. beans.validaForm
	com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:282)
	com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:527)
	com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
	org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
	org.apache.el.parser.AstValue.getValue(AstValue.java:107)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	javax.faces.component.UIOutput.getValue(UIOutput.java:173)
	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:189)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:320)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)
	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:390)

root cause 
java.lang.ClassNotFoundException: beans.validaForm
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	java.lang.Class.forName0(Native Method)
	java.lang.Class.forName(Class.java:247)
	com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:274)
	com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:527)
	com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
	org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
	org.apache.el.parser.AstValue.getValue(AstValue.java:107)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	javax.faces.component.UIOutput.getValue(UIOutput.java:173)
	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:189)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:320)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)
	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:390)

sim… java.lang.ClassNotFoundException: beans.validaForm, mais a classe esta la, pelo netbeans em source packages, esta la o pacote beans e a classe validaForm.java

D:\Documents and Settings\flavio\Meus documentos\NetBeansProjects\jsf\src\java&gt;tree/f Lista de caminhos de pastas para o volume java O número de série do volume é 0006EEA4 3C23:348C D:. &#9492;&#9472;&#9472;&#9472;beans validaForm.java

por que??

editando…se for util, o trecho do mapeamento do jsf no web.xml

&lt;servlet-mapping&gt; &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt; &lt;url-pattern&gt;*.java&lt;/url-pattern&gt; &lt;/servlet-mapping&gt;

4 Respostas

Giulliano

vc deixou a classe com o construtor padrão ?? Vc não acha melhor usar o eclipse…rss (brincadeira…)

maior_abandonado

sim... deixei a classe com o construtor padrão (tava seguindo um livro, porém alterando nomes, mais uma ou outra coisinha... verifiquei que o livro tb não declarou o construtor...)

hehe... nada contra nenhuma IDE, não sei se a brincadeira é por causa de alguns posts anteriores meus falando disso, mais o q eu acho o cumulo é ficarem falando pra pessoa troca de IDE quando o problema referente ao tópico dela nada tem a ver com a tal, posts falando mal da IDe pq ela é ruim (ou otimos argumentos tecnicos do tipo...)

bom...enfim, voltando ao assunto do tópico...sim, a construtor não foi declarado, sendo assim ficou o padrão.

segue o código dele:

package beans;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author flavio
 */
public class validaForm {

    private String nome;

    /**
     * retorna o nome
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * insere um nome 
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        if (nome != null)
            this.nome = nome;
    }

    public String acao(){
        boolean sucesso = true;

        FacesContext contexto = FacesContext.getCurrentInstance();

        if (nome != null){

            //verifica caractere a caractere se o mesmo é valido (letras e espaços)
            for (int i=0;i&lt;nome.length();i++){
                char c = nome.charAt(i);

                //se entra, o caractere é invalido(se não é um caracter E não é um espaço)
                if (!Character.isLetter(c)&& !Character.isSpaceChar(c)){
                    FacesMessage mensagemErro = new FacesMessage("digite somente caracteres e espaços");
                    contexto.addMessage("formulario", mensagemErro);
                    sucesso = false;
                    break;
                }

            }
        }else
            sucesso = false;

        return (sucesso ? "sucesso" : "falha");

    }

}
>
Giulliano

seu código esta correto assim como seu faces config…

acho q vc deveria iniciar outro projeto e tentar de novo do mesmo jeito…pelo que vc passou esta tudo certo…

maior_abandonado

blz, eu vo tenta isso…

deve ser alguma outra coisa (eu até tentei recompilar/salvar tudo pra caso alguma coisa não tenha sido compilada ainda com tudo o q precisava…)

não imagino do q mais que eu precise… bom…eu vo tenta fazer isso que vc falou… talvez seja pq eu to com uma versão rc (6.5 rc)

obrigadão…eu vo tenta isso…vlw

Criado 31 de outubro de 2008
Ultima resposta 31 de out. de 2008
Respostas 4
Participantes 2