我被这个问题困扰了。我正在尝试显示一个类,如果某个字符串等于登录的用户名。然而,它似乎没有评估为真。 这是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' : ''}">
然而,我所做的一切都不能让“正确”的课程出现在div中。 为了更好的衡量,我在隐藏字段中的gsp中打印出两个类的值。
<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返回了什么样的对象?
答案 0 :(得分:1)
sec.loggedInUserInfo(field: 'username')}
的结果是HTML编码的字符串。 Spring返回encodeAsHTML()
值之前调用'username'
。在视觉上他们看起来一样但是他们是平等的吗?显然不是!