首先,XHTML 文件不是Servlet文件。这是一个Facelets文件。Facelets 是一种基于 XML 的视图技术。
至于您的具体问题,只需在 JSF 组件的rendered
属性中确定即可。如果布尔条件为false
,则 JSF 根本不会渲染组件(并且在提交时也不会处理它,因此您也可以安全地防止被篡改的请求)。
假设登录用户是User
EL 范围内可用的 javabean as #{user}
,并且有一个hasRole()
采用 aString
并返回 a的方法boolean
,那么您可以这样做:
<h:commandButton value="delete" rendered="#{user.hasRole('admin')}" />
有一些变化,比如只有一个isAdmin()
方法返回boolean
:
<h:commandButton value="delete" rendered="#{user.admin}" />
或者有一个getRoles()
返回 a 的方法Collection
:
<h:commandButton value="delete" rendered="#{user.roles.contains('admin')}" />
如有必要,您也可以使用 integer0
而不是 string admin
,但这样的自我记录较少。
也可以看看:
但是请注意,您基本上是家庭种植授权。您还可以考虑使用 Java EE 内置容器管理的身份验证和授权。然后,您可以使用HttpServletRequest#isUserInRole()
来授权用户。这很像User#hasRole()
建议:
<h:commandButton value="delete" rendered="#{request.isUserInRole('admin')}" />