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.
Coloque um objeto setor dentro da sua classe ControleSetor, algo como:
Setor setor;
//Deve ter o getter e o setter
public Setor getSetor() {
return setor;
}
public void setSetor(Setor setor) {
this.setor = setor;
}
//Seu método cadastrar.
public void cadastrar() {
DAOGenerico.cadastrar(getSetor);
}
Não sei direito como o faces manda o objeto para cá, mas dessa maneira tem funcionado para mim.
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.
@Entity
public class Setor implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String nome;
public Setor()
{
}
public void setId(Long id) {
this.id = id;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Setor)) {
return false;
}
Setor other = (Setor) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entidade.Setor[id=" + id + "]";
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public void cadastrar(Setor setor)
{
System.out.println(setor.nome);
new ControleSetor().cadastrar(setor);
}
}
new ControleSetor().cadastrar(setor);
return "sucesso";
}[/code]
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
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.