JSF

2017-07-07 1 views
-1

の別のリストから来たオブジェクトのアイテムは、このエンティティClienteを持ち、Telefonosとの関係OneToManyを持っています。JSF

@Entity 
public class Cliente implements Serializable { 

    @Id 
    @GeneratedValue(generator = "uuid") 
    @Column(name = "id", unique = true) 
    private String id; 

    private String nombre; 

    private String direccion; 

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "idTipoCliente") 
    @NotNull 
    private ClienteTipo tipo; 

    @OneToMany 
    @JoinColumn(name="idCliente", referencedColumnName="id") 
    private List<Telefono> telefonos; 

    public List<Telefono> getTelefonos() { 
     return telefonos; 
    } 

public void setTelefonos(List<Telefono> telefonos) { 
    this.telefonos = telefonos; 
} 


public Cliente() { 
} 

public Cliente(String id) { 
    this.id = id; 
} 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getNombre() { 
    return nombre; 
} 

public void setNombre(String nombre) { 
    this.nombre = nombre; 
} 



public String getDireccion() { 
    return direccion; 
} 

public void setDireccion(String direccion) { 
    this.direccion = direccion; 
} 



public ClienteTipo getTipo() { 
    return tipo; 
} 

public void setTipo(ClienteTipo tipo) { 
    this.tipo = tipo; 
} 
} 

私はこのように私のdataTableの項目を取得します。

<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://xmlns.jcp.org/jsf/html" 
      xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 

    <h:head> 
     <title>Catalogo de Clientes</title> 
    </h:head> 
<h:body> 

    <label>Nombre:</label> 
    <h:inputText value=""/> 
    <h:dataTable value="${clientesView.getClientes()}" var="cliente"> 
     <h:column> 
      <f:facet name="header">Nombre</f:facet> 
      ${cliente.nombre} 
     </h:column> 
     <h:column> 
      <f:facet name="header">Direccion</f:facet> 
      ${cliente.direccion} 
     </h:column> 
     <h:column> 
      <f:facet name="header">Tipo Cliente</f:facet> 
      ${cliente.tipo.descripcion} 
     </h:column> 
    </h:dataTable> 
</h:body> 
</html> 

各Clienteは、私は同じ列にそれを印刷できるか、telefonosのリストを持って、私は新しい時間作成しようとしました:列が、リストをreconoize doesntの:HへのdataTableを。

<h:column> 
      <f:facet name="header">Telefonos</f:facet> 
      <h:dataTable value="${cliente.telefonos}" var="tel"> 

      <h:column> 
       <f:facet name="hader">Descripcion</f:facet> 
       ${tel.descripcion} 
      </h:column> 
      </h:dataTable> 
      ${cliente.tipo.descripcion} 
     </h:column> 

答えて

0

電話エンティティだから顧客ID を持っている必要があります。 あなたは豆にポストを構築することができます:

Private List <Telefono> phones; // getters & setters 
@PostConstruct 
Public void init() { 
phones = // dao to get the phone list 
} 
public String sendPhone (String idClient) { 
    for (Phone t: this.getPhones()) { 
      If (t.idCliente.equals (idClient)) { 
        return t.description // or phone 
      } 
    } 
} 

コードXHTML:

<h:dataTable value = "$ {clientsView.getCustomers()}" var = "client"> 
             <h:column> 
                 <f:facet name = "header"> Phone</f:facet> 
                $ {clientsView.sendPhone (client.id)} 
             </h:column> 
</h:datatable> 

注:電話は関係を介して顧客に属している必要があります