从rich中选择所选值:select a a4j:repeat

时间:2014-01-08 23:09:43

标签: ajax jsf jsf-2 map richfaces

我使用a4j:repeat控件来遍历Map<Object, List<MyType>>列表。 XHTML页面同时显示h:outputTextrich: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中获取所选值。请指导我解决这个问题。

1 个答案:

答案 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,确认它是否适合您。

希望它有所帮助...