我正在使用 2 个字符串映射。
Map<String, String> offices;
Map<String, String> services;
一张地图包含“办公室”,一张地图包含“提供的服务”。这些都是动态的,因为可以添加或删除新的办公室或服务。我的问题是如何成功地说明哪些办公室支持每项服务,以及最终如何捕捉到这一点。
这就是我希望它看起来的样子:
我的第一个问题是我无法弄清楚如何使用 PrimeFaces 或 JSF vanilla 来表示它。我一直在研究不同的东西,比如 DataTable,但它们似乎都说明了一个“标题”,而不是我需要的列和行标题。或者他们说明了如何复杂地显示数据,所有数据都来自一个列表或地图。我需要说明 2 个地图会聚。我相信我需要将这两个地图组合成一个中间列表,但我正在摸索细节。
我的第二个问题是如何捕获返回的布尔值?我想我需要捕获索引,但它的细节暗示了我。
编辑:代码和澄清:
private Map<String, String> offices;
public Map<String, String> getOffices() {
return offices;
}
//constructor
offices.put("PV001", "Pleasantville");
offices.put("GV001", "Green Valley");
然后在 JSF/XHTML 标记中:
<p:selectManyCheckbox>
<f:selectItems value="#{myOffices.offices.entrySet()}"
var="entry" itemLabel="#{entry.value}" itemValue="#{entry.key}" />
</p:selectManyCheckbox>
那么我将如何像这样 CROSS 2 Maps 并获得相关的复选标记。通常我只会创建一个带有 bodyWork、paint、oilChange 属性的 office 类,但不幸的是我需要能够动态调整这些属性的数量,这就是我使用 Map 的原因。