Pessoal,
Estou com o seguinte problema no jsf...
Tenho uma classe Cliente que tem uma lista de telefones e tbm tenho um form com duas opções de telefone.. o problema é que eu tenho que passar esses dois telefones lá pro meu objeto cliente no meu managedBean. Como posso fazer isso ?
Formulario jsf
<a4j:form id="formcliente">
<h:outputLabel value="Nome: " for="nome" />
<h:inputText value="#{clientebean.cliente.nome}" id="nome" size="80" style="border: 1px solid #ccc; " required="true" requiredMessage="COLOQUE O NOME"/>
<br/><br/>
<h:outputLabel value="RG: " for="rg" />
<h:inputText value="#{clientebean.cliente.rg}" id="rg" style="border: 1px solid #ccc; "/>
<h:outputLabel value="Orgao RG: " for="exprg" />
<h:inputText value="#{clientebean.cliente.exprg}" id="exprg" style="border: 1px solid #ccc; "/>
<br/><br/>
<h:outputLabel value="Email: " for="mail" />
<h:inputText value="#{clientebean.cliente.email}" id="mail" style="border: 1px solid #ccc; "/>
<h:outputLabel value="Logradouro: " for="logradouro" />
<h:inputText value="#{clientebean.cliente.endereco.logradouro}" id="logradouro" size="45" style="border: 1px solid #ccc; "/>
<br/><br/>
<h:outputLabel value="Numero: " for="num" />
<h:inputText value="#{clientebean.cliente.endereco.numero}" id="num" style="border: 1px solid #ccc; "/>
<h:outputLabel value="Complemento: " for="complemento" />
<h:inputText value="#{clientebean.cliente.endereco.complemento}" id="complemento" style="border: 1px solid #ccc; "/>
<br/><br/>
<h:outputLabel value="Bairro: " for="bairro" />
<h:inputText value="#{clientebean.cliente.endereco.bairro}" id="bairro" style="border: 1px solid #ccc; "/>
<h:outputLabel value="Cidade: " for="cidade" />
<h:inputText value="#{clientebean.cliente.endereco.cidade}" id="cidade" style="border: 1px solid #ccc; "/>
<h:outputLabel value="UF: " for="uf" />
<h:inputText value="#{clientebean.cliente.endereco.uf}" id="uf" style="border: 1px solid #ccc; "/>
<br/><br/>
<h:outputLabel value="CEP: " for="cep" />
<h:inputText value="#{clientebean.cliente.endereco.cep}" id="cep" style="border: 1px solid #ccc; "/>
<h:outputLabel value="Numero Tel: " for="tel" />
<h:inputText value="#{clientebean.cliente.telefone.numero}" size="15" id="tel" style="border: 1px solid #ccc; "/>
<h:outputLabel value="Tipo: " for="tipotel" />
<h:inputText value="#{clientebean.cliente.telefone.tipo}" id="tipotel" style="border: 1px solid #ccc; "/>
<br/><br/>
<h:outputLabel value="Numero Tel: " for="tel2" />
<h:inputText value="#{clientebean.cliente.telefone.numero}" id="tel2" style="border: 1px solid #ccc; "/>
<h:outputLabel value="Tipo tel: " for="tipotel2" />
<h:inputText value="#{clientebean.cliente.telefone.tipo}" id="tipotel2" style="border: 1px solid #ccc; "/>
<br/><br/><br/>
<h:commandButton value="CADASTAR CLIENTE" action="#{clientebean.cadastrar}" style="border: 1px solid #006699; background-color: #fff; color: #006699; font-family: verdana; font-weight:bolder; font-size: 10px;"/>
<h:commandButton value="LIMPAR FORMULARIO" type="reset" style="border: 1px solid #006699; background-color: #fff; color: #006699; font-family: verdana; font-weight:bolder; font-size: 10px;"/>
<br/>
<h:messages/>
</a4j:form>
Classe Cliente (Model)
package br.com.sisexpress.entity;
import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
@SuppressWarnings("serial")
@Entity
@Table(name = "tbl_cliente")
public class Cliente implements Serializable{
@Id
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long idcliente;
@Column
private String nome;
@Column
private String rg;
@Column
private String exprg;
@Column
private String email;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="id_endereco")
private Endereco endereco;
@ManyToMany(cascade=CascadeType.PERSIST)
@JoinTable(
name="tbl_cliente_tel",
joinColumns=@JoinColumn(name="id_cliente"),
inverseJoinColumns=@JoinColumn(name="id_telefone")
)
private List<Telefone> telefones;
public Cliente() {
}
// ...
ClienteBean
package br.com.sisexpress.managedbean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import br.com.sisexpress.entity.*;
import br.com.sisexpress.persistence.HibernateDAO;
@ManagedBean(name = "clientebean")
@RequestScoped
public class ClienteBean {
private Cliente cliente;
private List<Telefone> telefones = new ArrayList<Telefone>();
public ClienteBean() {
cliente = new Cliente();
cliente.setEndereco(new Endereco());
//cliente.setTelefone(telefones);
}
public List<Telefone> getTelefones() {
return telefones;
}
public void setTelefones(List<Telefone> telefones) {
this.telefones = telefones;
}
public void cadastrar() {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage mensagem;
try {
//salva o cliente no bd
new HibernateDAO<Cliente>(Cliente.class).salvar(cliente);
mensagem = new FacesMessage("Cliente Cadastrado com Sucesso !");
// new Cliente();
} catch (Exception e) {
mensagem = new FacesMessage(e.getMessage());
}
// adiciona a mensagem em <h:messages>
context.addMessage("formcliente", mensagem);
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
}