2017-07-07 62 views
-1

我有這個實體客戶端,並且與電話服務具有關係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的名單,我怎麼能打印在同一列中,我試圖創建一個新的H:dataTable的成H:列,但犯規reconoize列表。

<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> 

注意:電話必須通過關係屬於客戶

相關問題