我必须从JSP页面读取当前用户的角色的哪些选项?我知道visibleOnUserRole="myRole"Tomahawk组件的属性,但是我需要角色来完成比简单可见性更复杂的事情。
visibleOnUserRole="myRole"
该的ExternalContext暴露用户和角色信息。
public class RolesAccess implements Serializable { public String getUserPrincipalName() { FacesContext context = FacesContext.getCurrentInstance(); Principal principal = context.getExternalContext().getUserPrincipal(); if(principal == null) { return null; } return principal.getName(); } public String getUser() { FacesContext context = FacesContext.getCurrentInstance(); return context.getExternalContext().getRemoteUser(); } public boolean isManager() { FacesContext context = FacesContext.getCurrentInstance(); return context.getExternalContext().isUserInRole("manager"); } }
如果您在Servlet中使用JSF,则此信息将映射到HttpServletRequest公开的值。
您可以使用托管bean通过表达式语言将值公开给视图。
<f:view> <h:outputLabel value="#{rolesBean.userPrincipalName}" /> <h:outputLabel value="#{rolesBean.user}" /> <h:outputLabel value="#{rolesBean.manager}" /> </f:view>