我尝试将参数传递给方法管理员,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
我托管Bean中的代码就是这样
public boolean isAdmin(String role){
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
return request.isUserInRole("admin");
}
Run Code Online (Sandbox Code Playgroud)
rendered="#{loginBean.admin('dataread'}"
Run Code Online (Sandbox Code Playgroud)
你在那里缺少)一个EL语法错误,导致该值不被识别为EL表达式,因此被视为普通的vanilla字符串,因此在rendered属性中默认为boolean true.此外,在指定操作表达式#{bean.method()}而不是像值表达式时#{bean.property},应指定完整的方法名称,isAdmin()而不是admin().
总而言之,这应该做到:
rendered="#{loginBean.isAdmin('dataread')}"
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,HttpServletRequestEL范围已经可以使用#{request},所以这也应该不需要支持bean样板:
rendered="#{request.isUserInRole('admin')}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6902 次 |
| 最近记录: |