2013-08-30 16 views
-1

我對jsf很新。我需要比較jsf中的bean列表。任何可能的方式?是否有任何方法比較jsf中的列表中的bean?

據說該列表包含6個元素。我需要比較 1和2,3和4,5和6.任何可能的方式?

他是我多麼希望我的表現能像.......

if{#some.path eq "paths installed"} && some.path+1 eq "paths used)} 
then 
{if(#(some.path.substringAfter(':') eq (#(some.path+1.substringAfter(':') 

...如何給這個使用JSF?

+2

爲什麼要複製你的問題,並在你剛寫下另一個那樣的6分鐘後重復它? http://stackoverflow.com/questions/18524694/how-to-compare-beans-using-rendered-in-jsf – noone

回答

0

你不需要做全部你的邏輯使用表達式語言。您可以調用JSF託管的bean的方法,並讓標準Java執行此邏輯。

在你的另一個問題中,你說你正在使用<ui:repeat>。它有一個名爲varStatus的屬性,您可以使用該屬性來獲取正在迭代的集合的元素的當前索引。它可能看起來像這樣

<ui:repeat var="element" value="#{someBean.someCollection}" varStatus="status"> 
    <!-- Random things you do with #{element} --> 
    <!-- To compare two entries you can do this: --> 
    <!-- #{someBean.compareElements(someBean.someCollection.get(status.index), someBean.someCollection.get(status.index+1)} --> 
    <!-- To avoid IndexOutOfRange use rendered="#{not status.last}" --> 
</ui:repeat> 
+0

幾乎想要什麼。當我想顯示bean的列表時,在這種情況下,我有兩個列表,我想讓第一個bean列表顯示在左側列中,而下一個列表顯示在右側。第一個列表也包含空元素。在這些情況下,必須顯示在右列中的元素顯示在右側。 – Pramoth

+0

#{someBean.compareElements(someBean.someCollection.get(status.index),someBean.someCollection.get(status.index + 1)} ..我必須把它放在哪裏?是否有任何預定義的函數用於比較 – Pramoth

+0

@Pramoth顯然,當你需要它,或者它應該做什麼的時候,你會把它放在你的facelets代碼中,EL有一些預先構建的基本函數用於比較,'eq'代表相等,'ne'代表不等於,還有一些算術代碼比如'le'(不太相等)等等。有關所有操作符的完整列表,請查看規範:http://www.sws.bfh.ch/~fischli/courses/info/javaee/doc/expression_language-2_2- MREL-spec.pdf – noone

相關問題