gpt4 book ai didi

jsf - 如何将参数传递给渲染属性?

转载 作者:行者123 更新时间:2023-12-02 08:48:15 25 4
gpt4 key购买 nike

我尝试像这样将参数传递给方法管理:

<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>

我的托管Bean中的代码就是这样

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

最佳答案

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

你在那里丢失了 ) 一个 EL 语法错误,导致该值不被识别为 EL 表达式,因此被视为普通字符串,将在 中呈现 属性因此默认为 bool 值 true。此外,当指定像 #{bean.method()} 这样的操作表达式而不是像 #{bean.property} 这样的值表达式时,您应该指定完整的方法名称,因此isAdmin() 而不是 admin()

总而言之,应该这样做:

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

与具体问题无关HttpServletRequest 已通过#{request} 在 EL 范围内可用,因此这也应该如此无需支持 bean 样板:

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

关于jsf - 如何将参数传递给渲染属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com