2014-01-16 16 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

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

相关问题