Problemas Enviar o botão do JSF

Olá, pessoal!

eu tentei abrir uma janela e ocorreu o erro… veja em baixo…

Mensagem de erro

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

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

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /cadastro.jsp at line 19

16: 				<h:outputText id="nomeText" value="#{cadastro.nome}"/>
17: 				<h:outputLabel id="email" value="E-mail: "/>
18: 				<h:outputText id="emailText" value="#{cadastro.email }" />
19: 				<h:commandButton id="submit" value="Cadastro" action="#{cadastro.salvar} " />
20: 			</h:panelGrid>
21: 		</rich:column>
22: 	</h:form>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:469)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)


root cause 

javax.el.ELException: Not a Valid Method Expression: #{cadastro.salvar} 
	org.apache.el.lang.ExpressionBuilder.createMethodExpression(ExpressionBuilder.java:231)
	org.apache.el.ExpressionFactoryImpl.createMethodExpression(ExpressionFactoryImpl.java:57)
	org.apache.jsp.cadastro_jsp._jspx_meth_h_005fcommandButton_005f0(cadastro_jsp.java:404)
	org.apache.jsp.cadastro_jsp._jspx_meth_h_005fpanelGrid_005f0(cadastro_jsp.java:268)
	org.apache.jsp.cadastro_jsp._jspx_meth_rich_005fcolumn_005f0(cadastro_jsp.java:208)
	org.apache.jsp.cadastro_jsp._jspx_meth_h_005fform_005f0(cadastro_jsp.java:165)
	org.apache.jsp.cadastro_jsp._jspx_meth_f_005fview_005f0(cadastro_jsp.java:123)
	org.apache.jsp.cadastro_jsp._jspService(cadastro_jsp.java:85)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:469)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

Cadastro

@Entity
public class Cadastro {
	@Id
	@GeneratedValue
	private int id;
	@Column(name="nome")
	private String nome;
	@Column(name="email")
	private String email;
	
	public String salvar(){
		
		CadastroDAO dao = new CadastroDAO();
		
		Cadastro c = new Cadastro();
		
		c.setNome(this.nome);
		c.setEmail(this.email);
		
		if(dao.salvar(c)){
			return "salvarSucesso";
		} else {
			return "naoSalvar";
		}
		
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	

}

Cadastro DAO

public class CadastroDAO {
	
	public Boolean salvar(Cadastro c){
		
		Session session = Database.getInstance().getSession();
		
		session.save(c);
		session.close();
		
		return true;
		
	}

}

Cadastro.jsp

<body>
<f:view>
	<h:form>
		<rich:column>
			<h:panelGrid columns="2">
				<h:outputLabel id="nome" value="Nome: " />
				<h:outputText id="nomeText" value="#{cadastro.nome}"/>
				<h:outputLabel id="email" value="E-mail: "/>
				<h:outputText id="emailText" value="#{cadastro.email }" />
				<h:commandButton id="submit" value="Cadastro" action="#{cadastro.salvar} " />
			</h:panelGrid>
		</rich:column>
	</h:form>
</f:view>
</body>

Aguardo ao retorno… espero pelo me ajudam

Pessoal!

Não encontrou uma solução de problemas?

eu não consigo encontrar o erro…

Espero que vc me ajudem ou dar uma dicas?

antenciosamente

Porque você tem salvar no Entity ? Parece que você está misturando as camadas. Eu deixaria só no Dao. E se ele for o MB, ficaria: action="#{cadastroDAO.salvar}

Dentro de DAO criaria um objeto Cadastro. Setaria os values do form nele. E o método salvar em vez de passar o objeto, pegar esse criado.

[quote=edudebom]Porque você tem salvar no Entity ? Parece que você está misturando as camadas. Eu deixaria só no Dao. E se ele for o MB, ficaria: action="#{cadastroDAO.salvar}

Dentro de DAO criaria um objeto Cadastro. Setaria os values do form nele. E o método salvar em vez de passar o objeto, pegar esse criado.

[/quote]

Esse que entity é anotação da hibernate… vou ver tentar que vc diz… valeu!