2014-01-08 64 views
0

我正在使用一個a4j:repeat控制來遍歷一個Map<Object, List<MyType>>列表。 XHTML頁面顯示h:outputTextrich:select控件。從豐富的獲取選定的值:選擇內部o a4j:重複

我循環遍歷一個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的選定值。請指導我解決這個問題。

+2

請提供您的xhtml和託管bean的示例(http://sscce.org)。你想要詳細記錄什麼,目前的確切問題是什麼(例外,錯誤信息)... –

+0

@ L-Ray我在下面發佈了一個片段。在此先感謝 – HumanoLegal

+0

據我所知,列表'是不同的每個對象,對不對? –

回答

0

基本上我會建議不要使用數據結構Map<String,List>爲描述的情況。爲什麼不改變結構與SelectionObject -class保持對象(List<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> 

的可以完成用於該對象結構的y準備/建築。在getListMasterItems(使用一些緩存)中,用戶數據的檢索在您的提交按鈕的action中完成,無論如何。只需遍歷列表並讀出`selectedValue。如果答案是可用/有用的,請考慮upvote,確認它是否適合您。

希望它有幫助...

+0

這聽起來是一個公平的解決方案。所以,我需要創建另一個具有接近屬性的類來模仿Map >結構。列表中的每個對象都有選定的值,對吧? – HumanoLegal

+0

確切地說,看到更新的回答上面 –

+0

你不會相信它。它的作品非常完美。謝啦! – HumanoLegal