为什么我的`<sec:ifanygranted roles =“ROLE_ADMIN”>`标签被忽略了?</sec:ifanygranted>

时间:2010-05-27 21:22:10

标签: spring-security facelets

我发现标记<sec:IfAnyGranted roles="ROLE_ADMIN" >被忽略,在.xhtml页面上我收到以下消息:

The attribute **roles** is not defined in Component's interface

1 个答案:

答案 0 :(得分:2)

标准的Spring Security taglib不适用于JSF。

您可以使用the Facelets version

然后你可以在表达式中使用sec:ifAnyGranted()函数(不是标记):

<p:menubar xmlns="http://www.w3.org/1999/xhtml"
  xmlns:p="http://primefaces.prime.com.tr/ui"
  xmlns:sec="http://www.springframework.org/security/facelets/tags">
...
<p:submenu label="#{msgs['menu.report']}" 
                    rendered="#{sec:ifAnyGranted('ROLE_ADMIN, ROLE_REPORTER')}">

这是一段工作代码,仅显示给定用途的菜单。 请注意,我不使用the default Spring JSP taglib,而是使用Facelets版本。