2013-05-08 104 views
1

我目前使用Spring Security来管理我的Struts2应用程序的登录和会话。 在JSP页面中检索记录的用户我通过将以下内容导入到我的jsp中来使用sec标签库。结合Spring Security标签和Struts2标签

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>

所以打印我登录的用户,我使用<sec:authentication property="principal.username" />

我通过java.util.List遍历,所谓的动作获得,所以迭代它经过是这样的:

<s:iterator value="#request.myList" var="userEmail"> 
    My value: <s:property value="#userEmail"/> 
</s:iterator> 

我正在寻找一种方法来测试列表项检查是与记录的用户相同,但我无法设法在<s:if>标签内检索sec

有谁知道如何将两者结合?而这样做

<s:if test="%{<sec:authentication property="principal.username" /> == #userEmail}">

+0

你可以使用像'<秒:认证... >'并在测试中使用'#foo'?我不是100%相信这个逻辑应该在视图层,但这是一个单独的问题。 – 2013-05-08 17:02:06

+0

我同意在视图层上保留这种测试的想法看起来很奇怪,但它与决定显示某些样式和div有关。 – 2013-05-08 20:35:13

+0

我的意思是访问主体用户名。至少我会把它包装在一个自定义标签中。虽然我猜想如果只是在遍历这样的列表时使用它,它可能不值得。 – 2013-05-08 20:57:20

回答

1

如何只使用从会话信息:

<s:if test="#session.SPRING_SECURITY_CONTEXT.authentication.principal.username == #userEmail">