2013-05-06 51 views
0

我想用我的支持bean中的2個列表來創建一個rich:datagrid,而不是一個。richfaces datagrid與2個支持bean列表

所以不是:

<rich:dataGrid columns="1" width="100%" value="#{MyBean.myList1}" var="listobj1" iterationStatusVar="it" elements="10"> 

我想:

<rich:dataGrid columns="1" width="100%" value="#{MyBean.myList1}, #{MyBean.myList2}" var="listobj1, listobj2" iterationStatusVar="it" elements="10"> 

這可能嗎?

+0

你只想迭代在myList1和myList2的所有值上?在這種情況下,我會使用'MyBean.myUnion'作爲值,並有一個getter,它只是說'List l = new ArrayList(myList1); l.addAll(myList2);返回l;'。但是,你使用'var'使我困惑 - 你期望它做什麼? – mabi 2013-05-06 09:28:09

+0

對不起,應該可能指定爲什麼。基本上,我有兩個支持bean列表,它們是POJO列表(列表)。現在我想要的是能夠引用數據網格中POJO的屬性。因此基本上我希望能夠在數據網格中添加。 – Vinc 2013-05-06 09:49:17

+0

listObj1和listObj2之間是否存在1:1映射?在這種情況下,您可能會使用'Map '並對此進行迭代。儘管這對JSF來說很麻煩,但請參閱http://stackoverflow.com/questions/8552804/uirepeat-doesnt-work-with-map和http://stackoverflow.com/a/10934074/785663 – mabi 2013-05-06 09:56:37

回答

2

簡答:不,這是不可能的,因爲value必須指向一個對象(不是複合字符串)。

基於這樣的事實,你只有這兩個名單,並似乎有一個隱含的映射,我會遍歷一個從循環引用其他:

<rich:dataGrid columns="1" value="#{MyBean.myList1}" rowKeyVar="k" var="elem" elements="10"> 
    <h:outputText value="#{elem.name}: #{MyBean.myList2[k].name}" /> 
</rich:dataGrid> 
+0

非常感謝,我會盡快接受Ive測試。 – Vinc 2013-05-06 11:26:17

+0

是否需要一定的Servlet,EL,JSF版本? – Vinc 2013-05-06 11:27:57

+0

不是我所知道的。儘管我一直在使用EL-2.2實現(Jboss EL)。 – mabi 2013-05-06 11:31:53