我正在构建一个liferay jsf portlet,其中包含一些selectmany复选框。对于每个选择复选框,都有2个列表。第一个用于存储可见元素,第二个包含所选元素。它应该是动态工作的,这就是为什么我将selectmanycheckbox的列表存储在两个单独的哈希图中。
我正在遍历第一个哈希图以显示数据(工作正常)。但是然后在selectManyCheckbox中,我想用来自foreach循环的键访问所选元素的第二个Hashmap(不起作用)。
是否有一种方法可以从第一个哈希表中访问密钥中的第二个哈希图?
感谢您的帮助
<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循环的键必须是字符串类型,而不是整数。