Entidade Setor que contem o campo nome e os respectivos getters e setters e tenho tb uma classe ControleSetor que acessa a minha Persistencia na qual listo o código abaixo.
Controle Setor
public class ControleSetor {
public ControleSetor() {
}
public void cadastrar(Setor setor) {
DAOGenerico.cadastrar(setor);
}
}
Criei um formulário JSF e gostaria que ao clicar no botao cadastrar. O JSF enviasse os dados para o meu controle, inserido assim o registro no banco de dados. Como devo fazer o mapeamento do meu faces-config.xml? Alguem poderia me ajudar?Segue abaixo a minha página em JSF de cadastro.
Não sei direito como o faces manda o objeto para cá, mas dessa maneira tem funcionado para mim.
anderson.bonavides
No seu Managed Bean criado vai ter que conter um método chamado cadastrar. Ele que será encarregado de realizar os procedimentos necessários para cadastrar. Como por exemplo chamar o método que cadastra do teu Controler.
eullerbd
Coloquei o método cadastrar no meu Bean setor da seguinte forma.
avax.servlet.ServletException: #{setor.cadastrar}: org.apache.jasper.el.JspMethodNotFoundException: /Setor/cadSetor.jsp(18,11) '#{setor.cadastrar}' Method not found: entidade.Setor[id=null].cadastrar()
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
Se alguém souber, por favor me ajude, e agradeço pelas respostas acima.
anderson.bonavides
Poe teu managed Beam, teu faces-config.xml e teu form.
eullerbd
Bean Setor
@EntitypublicclassSetorimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateLongid;privateStringnome;publicSetor(){}publicvoidsetId(Longid){this.id=id;}@Id@GeneratedValue(strategy=GenerationType.IDENTITY)publicLonggetId(){returnid;}@OverridepublicinthashCode(){inthash=0;hash+=(id!=null?id.hashCode():0);returnhash;}@Overridepublicbooleanequals(Objectobject){// TODO: Warning - this method won't work in the case the id fields are not setif(!(objectinstanceofSetor)){returnfalse;}Setorother=(Setor)object;if((this.id==null&&other.id!=null)||(this.id!=null&&!this.id.equals(other.id))){returnfalse;}returntrue;}@OverridepublicStringtoString(){return"entidade.Setor[id="+id+"]";}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicvoidcadastrar(Setorsetor){System.out.println(setor.nome);newControleSetor().cadastrar(setor);}}
Se eu comento a linha new ControleSetor().cadastrar(setor), ele faz todo fluxo de navegação corretamente, mas nao vai inserir o objeto ...
caso eu descomento ela...ele nao passa o objeto setor para a minha classe de controle, e da ExceptionInInitializerError .....estou sem entender, esta implementacao do JSF. Alguem poderia me ajudar mais uma vez?Obrigado
*OBS: Estou inicializando o objeto setor no construtor do Managed Bean
J
jukkinha
Uma das formas de recuperar o managed bean é assim:
Cara Aqui deu certinho dos dois modos. criando um método no próprio bean e cadastrando usando a referência this, e com outro objeto chamando FacesContext con…, seu erro deve estar em outro lugar.
eullerbd
Estou usando o JPA na minha camada de Persistencia. Vou fazer mais alguns testes e tentar ver o que está acontecendo, obrigado a todos.
G
gustavojava
Moçada é o seguinte…
É o seguinte tenho 3 tabelas ALUNO --MATRICULA – CURSO;
cadastrei o aluno e curso tranquilamente usando JSF + HIBERNATE…
MAS O seguinte …nO JSP matricula, tenho q pegar o id do aluno , e o id do curso…como eu faço isso usando JSF