2012-05-23 75 views
0

我尝试将参数传递到方法管理这样的:如何将参数传递给呈现的属性?

<p:toolbarGroup align="right" rendered="#{loginBean.admin('dataread'}"> 
          <h:form> 
           <p:commandButton value="manage users" ajax="false" 
               icon="ui-icon-document" action="/admin/manageUsers.xhtml?faces-redirect=true"/> 
          </h:form> 
         </p:toolbarGroup> 

在我的Managed Bean的代码就是这样

public boolean isAdmin(String role){ 
      FacesContext facesContext = FacesContext.getCurrentInstance(); 
      HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
      return request.isUserInRole("admin");     
      } 
+0

,会发生什么?... –

回答

5
rendered="#{loginBean.admin('dataread'}" 

您与丢失的)的EL已经有语法错误导致该值不被识别为EL表达式,因此被视为简单的香草串,其将在rendered属性中默认为布尔型true。此外,在指定动作表达式(如#{bean.method()})而不是像#{bean.property}这样的值表达式时,应指定完整的方法名称,即isAdmin()而不是admin()

所有的一切,这应该这样做:

rendered="#{loginBean.isAdmin('dataread')}" 

无关到具体问题,HttpServletRequest在EL范围由#{request}已经上市,所以这也应该做,而不需要用于支撑豆的样板:

rendered="#{request.isUserInRole('admin')}" 
+0

感谢它的工作原理:)))) –

相关问题