比较Grails GSP中的字符串

时间:2016-01-30 13:20:28

标签: grails spring-security grails-3.0

我被这个问题困扰了。我正在尝试显示一个类,如果某个字符串等于登录的用户名。然而,它似乎没有评估为真。 这是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返回了什么样的对象?

1 个答案:

答案 0 :(得分:1)

sec.loggedInUserInfo(field: 'username')}的结果是HTML编码的字符串。 Spring返回encodeAsHTML()值之前调用'username'。在视觉上他们看起来一样但是他们是平等的吗?显然不是!