Pessoal,
Estou usando JSF e estou com o seguinte problema: tenho um managed bean chamado ProdutoManagedBean. Ele possui alguns métodos get’s e set’s aos quais o controller chama sem problema. A coisa pega quando eu tento chamar os métodos doInserir, doAlterar e doRemover, pois o controlador simplesmente não chama esses métodos e dá um repost para a página atual (já debuguei e o controlador realmente não entra nesses métodos).
Obs: o código da tag dataTable está comentado porque, quando eu descomento, lança a seguinte exceção: javax.el.PropertyNotFoundException: The class ‘br.com.exemplo.apresentacao.ProdutoManagedBean’ does not have the property ‘doRecuperarTodos’., ou seja, ele não consegue enxergar esse método também. Somente os get’s e set’s mesmo que funcionam. O engraçado é que se eu tento colocar getDoRecuperarTodos, também não funciona.
O que eu posso estar fazendo de errado?
Segue abaixo os códigos.
Managed Bean
package br.com.exemplo.apresentacao;
import br.com.exemplo.negocio.entidade.Produto;
import br.com.exemplo.negocio.regra.ProdutoRemote;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
public class ProdutoManagedBean implements java.io.Serializable {
private Produto produto;
private @EJB ProdutoRemote produtoRemote;
public ProdutoManagedBean() {
this.produto = new Produto();
}
public Integer getId() {
return this.produto.getId();
}
public void setId(Integer $id) {
this.produto.setId($id);
}
public String getNome() {
return this.produto.getNome();
}
public void setNome(String $nome) {
this.produto.setNome($nome);
}
public Double getPreco() {
return this.produto.getPreco();
}
public void setPreco(Double $preco) {
this.produto.setPreco($preco);
}
public String getDoInserir() {
this.produtoRemote.inserir(this.produto);
return "sucesso";
}
public void doAlterar() {
this.produtoRemote.alterar(this.produto);
}
public void doRemover() {
this.produtoRemote.remover(this.produto);
}
public List<Produto> doRecuperarTodos() {
return this.produtoRemote.recuperarTodos();
}
}
CadastroDeProduto.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>:: Controle de Pedidos :: Cadastro de Produto</title>
</head>
<body>
<f:view>
<h1>Cadastro De Produto</h1>
<h:form>
<br><br>
<h:panelGrid columns="2">
<h:outputText value="Nome:"/>
<h:inputText id="nome" value="#{produtoManagedBean.nome}" title="Digite o nome aqui..."/>
<h:outputText value="Preço:"/>
<h:inputText id="preco" value="#{produtoManagedBean.preco}" title="Digite o preço aqui..."/>
<h:commandButton id="btnDoInserir" action="#{produtoManagedBean.doInserir}" value="Inserir"/>
<h:commandButton id="btnDoAlterar" action="#{produtoManagedBean.doAlterar}" value="Alterar"/>
</h:panelGrid>
<br><br>
<h2><h:outputText value="Produtos Já Cadastrados"/></h2>
<%--h:dataTable value="#{produtoManagedBean.doRecuperarTodos}" var="produto">
<h:column>
<f:facet name="header">
<h:outputText value="Código"/>
</f:facet>
<h:outputText value="#{produto.id}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{produto.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Preço"/>
</f:facet>
<h:outputText value="#{produto.preco}"/>
</h:column>
</h:dataTable--%>
</h:form>
</f:view>
</body>
</html>
faces-config
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" 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>produtoManagedBean</managed-bean-name>
<managed-bean-class>br.com.exemplo.apresentacao.ProdutoManagedBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/paginas/produto/CadastroDeProduto.jsp</from-view-id>
<navigation-case>
<from-action>#{produtoManagedBean.doInserir}</from-action>
<from-outcome>sucesso</from-outcome>
<to-view-id>/paginas/Sucesso.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>falha</from-outcome>
<to-view-id>/paginas/Falha.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
Agradeço a quem puder ajudar…