我使用a4j:repeat
控件来遍历Map<Object, List<MyType>>
列表。 XHTML页面同时显示h:outputText
和rich:select
控件。
我在Map<String, List<Items>>
实例中循环,以显示主 - 详细信息表。在h:outputText
我显示主要说明,rich:select
显示详细信息。
代码如下:
customer.xhtml
<a4j:repeat value="#{masterManagedBean.listMasterItems.entrySet().toArray()}"
var="itemsVar">
<h:outputText value="#{itemsVar.key}" />
<rich:select enableManualInput="true">
<f:selectItems value="#{itemsVar.value}" id="itemsMenu"
var="itemsVarSelect"
itemLabel="#{itemsVarSelect.descriptionItems}"
itemValue="#{itemsVarSelect.idItems}" />
</rich:select>
</a4j:repeat>
此代码段完美无缺。但是,我不知道如何从转发器生成的每个rich:select
中获取所选值。请指导我解决这个问题。
答案 0 :(得分:0)
基本上我建议不要将数据结构Map<String,List>
用于所描述的情况。为什么不将结构更改为正常的对象列表(List<SelectionObject>
)并保持SelectionObject
类:
因此JSF代码看起来像
<a4j:repeat value="#{masterManagedBean.listMasterItems}"
var="itemsVar">
<h:outputText value="#{itemsVar.label}" />
<rich:select enableManualInput="true" value="#{itemsVar.selectedValue}">
<f:selectItems value="#{itemsVar.possibleValues}" id="itemsMenu"
var="itemsVarSelect"
itemLabel="#{itemsVarSelect.descriptionItems}"
itemValue="#{itemsVarSelect.idItems}" />
</rich:select>
</a4j:repeat>
可以完成此对象结构的任何准备/构建。在getListMasterItems
(使用一些缓存)中,无论如何,用户数据的检索都在提交按钮的action
中完成。只需遍历列表并读出`selectedValue。如果答案可用/有帮助,请考虑一个upvote,确认它是否适合您。
希望它有所帮助...