2014-01-16 46 views
0

0我需要根據條件渲染一些按鈕,我得到的條件是正確的,但每次我訪問頁面按鈕它顯示與addl按鈕,這裏是我的代碼<ui:repeat><ui:repeat>顯示數據更多次數

<ui:repeat var="r" value="#{sessionScope['restrictpageload']}" varStatus="status">  
    <ui:repeat var="permission" value="#{restrictPageLoad.isUserHasFeaturePermission(4,'abc')}" varStatus="status2"> 
     <ui:fragment rendered="#{permission.featureCreate eq 'y'}" > 
      <h:commandButton value="Button1" action="#{bean.method()}"/> 
     </ui:fragment> 
    </ui:repeat>   
</ui:repeat> 

我在這裏的第一<ui:repeat>從會議獲得的值,我會通過作爲參數傳遞給第二個,這將返回我ArrayList和我要去渲染基於狀態的按鈕。

我得到裏面的值,但每次我訪問第二頁更多按鈕addsup.Please幫助。

+0

在哪裏以及如何將''limitspageload'填充到sessionScope中? –

+0

@ L-Ray我從backing bean和它的arraylist中獲取值,並且基於記錄的用戶保持它在會話中。 – user2644886

+0

你可以發佈託管bean嗎?如果這個bean不在會話範圍內,並且你填充了bean的每個構造/初始化,這可能是一個原因... –

回答

0

的評論太長......

3點:

  1. 外環聲明rstatus未在內部循環使用,因此「我在這裏的第一<ui:repeat>得到的值從會話,我會通過作爲參數第二「是假的

  2. value="#{sessionScope['restrictpageload']}"相當於value="#{restrictpageload}"

  3. value="#{sessionScope['restrictpageload']}"也許有一個錯字。你的意思value="#{sessionScope['restrictPageload']}"(大寫P

也許你想要做這樣的事情:

<ui:repeat var="restriction" value="#{bean.pageRestrictions}"> 
    <ui:repeat var="permission" value="#{bean.userPermissions}">  
     <ui:fragment rendered="#{restriction == permission}"> 
      <h:commandButton value="Button1" action="#{bean.method}"/> 
     </ui:fragment> 
    </ui:repeat> 
</ui:repeat> 

或更好

<ui:repeat var="restriction" value="#{bean.pageRestrictions}">  
    <ui:fragment rendered="#{bean.userHasFeaturePermission(restriction)}"> 
     <h:commandButton value="Button1" action="#{bean.method}"/> 
    </ui:fragment> 
</ui:repeat> 

但是如果你的按鈕是重複的,您要添加東西到你的循環,也許在isUserHasFeaturePermission


UPDATE(評論回覆)

仔細閱讀您的鏈接問題的接受的答案:

你的問題是沒有意義的。沒有「傳遞參數」,也沒有「傳遞參數使用」。你的話在某些特定的背景下可能是有意義的 - 但是背景缺失。

不相關,但值得一提,NEVER使用c:forEach在JSF頁面,除非你知道究竟是如何JSF生命週期的工作。

在表達式中傳遞參數取決於EL(ExpressionLanguage)庫版本。

只有當您有EL 2.2+時,纔可以傳遞參數。這個庫通常與servlet容器一起運輸。

閱讀this answer並鏈接了一個完整的解釋。

什麼是您的servlet容器? tomcat 6.0,glassfish 3.1?

但是,它會拋出異常嗎?

+0

感謝您的回覆,我刪除了外部,現在我想用參數調用方法。但我看到這裏(http://stackoverflow.com/questions/15186966/passing-parameters-using-uirepeat)它不可能是有什麼辦法我可以得到arraylist和迭代。 – user2644886

+0

查看回復的更新回答:) –

相關問題