我有两个 vector :
private Vector<City> allCities;
private Vector<Address> allAddresses;
城市对象包含城市 ID、邮政编码和城市名称,地址对象包含地址 ID、街道和城市 ID。 vector allCities 可以包含比 allAddresses 使用的城市更多的城市。
现在我想显示 h:selectOneListbox 中的所有地址,但不应显示 cityId,而应显示邮政编码和城市名称,如下所示:
postcode, cityname, street
有什么方法可以在不改变 vector 的情况下做到这一点吗?也许 c:forEach 是一个选项?
以下内容尚不工作,因为我不知道如何连接或使用 f:selectItems 中的两个 vector 。
<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>
最佳答案
您应该更改一些基本设置:
首先,您应该使用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>
关于java - f :selectItems - possible? 中的两个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388312/