我可以将 jsp 标记返回值存储在变量中而不强制为字符串吗?


<c:set var="userProfile"><sec:authentication property="principal" /></c:set>

有一个遗留的安全系统,我正在将其移植到弹簧安全中。在这种情况下,我想简单地将用户主体存储在一个变量中,这是所有遗留代码所期望的。

就目前而言,变量userProfile包含principal.toString()。

无论如何,这可能最好移到控制器上,但出于兴趣,有没有一种简单的方法可以在 jsp 页面中实现这一点?

正文中设置带有<c:set>的值的问题在于它始终是一个字符串(将正文内容评估为字符串)。如果使用 value 属性,则结果为评估值的类型:

<c:set var="userProfile" value="${...}" />

但只有当你有"暴露"的东西要评估时,上述情况才有可能。

我假设<sec:authentication>标签是Spring Security标签库的一部分?如果是这种情况,您使用它的方式会导致字符串强制(而不是<c:set>)。

标记可以将属性值写入输出流(作为字符串),也可以将属性"公开"为变量。在后一种情况下,这应该可以满足您的需求:

<sec:authentication property="principal" var="userProfile" />

最新更新