在 Grails GSP 中比较字符串

Comparing Strings in Grails GSP

我被这个问题难住了。如果某个字符串等于登录的用户名,我正在尝试显示 class。但是,它似乎从未评估过为真。 这是 gsp

中的代码
<g:if test="${it.from.username == sec.loggedInUserInfo(field: 'username')}">
   <div class="direct-chat-msg right">
</g:if>
<g:else>
   <div class="direct-chat-msg">
</g:else>

我也试过用这个方法

<div class="direct-chat-msg ${(it.from.username == sec.loggedInUserInfo(field: 'username')) ? 'right' : ''}">

然而,我无法使 'right' class 出现在 div 中。 为了更好地衡量,我在隐藏字段的 gsp 中打印了两个 classes 的值。

<input type="hidden" value="${it.from.username}"/>
<input type="hidden" value="${sec.loggedInUserInfo(field: 'username')}"/>

而且数值完全一样

<input type="hidden" value="u***@gmail.com">
<input type="hidden" value="u***@gmail.com">

我试过几种字符串比较的组合 .equals(),两者都调用 .toString(),还尝试 as String。但是似乎没有任何效果。 可能是什么问题?

我试过从控制器传递模型中登录的用户对象,只调用 loggedInUser.username 就可以了。所以我现在的问题是,spring security?

返回什么样的对象?

sec.loggedInUserInfo(field: 'username')} 的结果是一个 HTML 编码字符串。 Spring 安全调用 encodeAsHTML(),然后返回 'username' 值。从视觉上看,它们看起来一样,但它们相等吗?显然不是!