我正在构建一个Liferay jsf portlet,其中包含一些选择框。对于每个选择复选框,有 2 个列表。第一个用于存储可见元素,第二个包含所选元素。它应该是动态工作的,这就是为什么我将选择多个复选框的列表存储在两个单独的哈希映射中。
我正在循环浏览要显示的数据的第一个哈希图(工作很好(。但是在 selectManyCheckbox 中,我想使用 foreach 循环中的键访问所选元素的第二个哈希图(这不起作用(。
有没有办法从第一个密钥访问密钥中的第二个哈希映射?
<c:forEach var="column" items="#{ListView.columns}">
<td>
<div>
<div style="margin-bottom:1em;">
<h3>Column #{column.key}</h3>
<p:commandButton value="Hinzufügen" actionListener="#{ListView.addFromSelected}" update="@form">
<f:attribute name="destination" value="#{column.key}" />
<f:attribute name="origin" value="0" />
</p:commandButton>
</div>
<table>
<tr>
<td>
<div style="background-color:white; border:1px solid lightgray; overflow-y:scroll; min-height:200px; max-height:200px;">
<p:selectManyCheckbox value="#{ListView.selectedColumns[column.key]}" layout="grid" columns="1">
<f:selectItems value="#{column.value}" var="block" itemLabel="#{block.name}" itemValue="#{block.id}" />
</p:selectManyCheckbox>
</div>
</td>
</tr>
</table>
</div>
</td>
</c:forEach>
好的,我解决了自己的问题。
解决方案:
foreach 循环的键必须是字符串类型,而不是整数。