2011-03-22 46 views
0

我有兩個向量:f:selectItems中的兩個集合 - 可能嗎?

private Vector<City> allCities; 
private Vector<Address> allAddresses; 

一個城市對象包含cityId,郵編和城市名,地址對象的addressId,街道和cityId。 Vector allCities可以包含比allAddresses更多的城市。

現在我想以顯示啊所有地址:selectOneListbox,但不是在cityId應該有郵編和城市名,就像這樣:

postcode, cityname, street 

有沒有辦法做到這一點不改變矢量?也許c:forEach是一個選項?

下面的工作還沒有結束,因爲我不知道如何連接或使用f:selectItems中的兩個向量。

 <h:selectOneListbox id="addresses" 
      rendered="#{!empty customerAddresses.allAddresses}" 
      required="true" requiredMessage="Please choose an address!" 
      value="#{customerAddresses.addrId}" label="Addresses"> 
      <f:selectItems value="#{customerAddresses.allAddresses}" var="addr" 
       itemLabel="#{addr.postcode}, #{addr.cityname}, #{addr.street}" 
       itemValue="#{addr.addressId}" /> 
     </h:selectOneListbox> 

回答

2

你應該改變你的一些基本設置:

,首先你應該使用List而不是Vector

然後讓Address類有一個成員City例如像這樣:

public class Address { 
private City city; 
private int addressId; 
private String street; 

// getters and setters 
} 

然後你可以使用它在你的facelet這樣:

<h:selectOneListbox id="addresses" 
    rendered="#{!empty customerAddresses.allAddresses}" 
    required="true" requiredMessage="Please choose an address!" 
    value="#{customerAddresses.addrId}" label="Addresses"> 
    <f:selectItems value="#{customerAddresses.allAddresses}" var="addr" 
     itemLabel="#{addr.city.postcode}, #{addr.city.cityname}, #{addr.street}" 
     itemValue="#{addr.addressId}" /> 
</h:selectOneListbox> 
相關問題