【发布时间】:2026-01-18 12:05:01
【问题描述】:
我目前正在使用 Spring Security 来管理我的 Struts2 应用程序上的登录和会话。 为了在 JSP 页面中检索登录的用户,我通过将以下内容导入我的 jsp 来使用 sec 标记库。
<%@ 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}">
【问题讨论】:
-
你能在测试中使用
<s:set var="foo"><sec:authentication ...></s:set>之类的东西并使用#foo吗?我不是 100% 相信这个逻辑应该在视图层中,但这是一个单独的问题。 -
我同意在视图层上保留此类测试的想法似乎很奇怪,但这与决定显示某些样式和 div 相关。
-
我的意思是访问主要用户名。至少我会把它包装在一个自定义标签中。虽然我猜如果它只是在迭代这样的列表时使用它可能不值得。
-
顺便说一句,尝试了您的建议,但没有用,但接受的答案有效。
-
Dave 解决方案也应该有效。
标签: struts2 spring-security taglib