比较 Grails GSP 中的字符串
Posted
技术标签:
【中文标题】比较 Grails GSP 中的字符串【英文标题】:Comparing Strings in Grails GSP 【发布时间】:2016-05-08 05:40:51 【问题描述】:我被这个问题难住了。如果某个字符串等于登录的用户名,我正在尝试显示一个类。然而,它似乎永远不会评估为真。 这是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】:sec.loggedInUserInfo(field: 'username')
的结果是一个 html 编码的字符串。 Spring 安全性在返回 'username'
值之前调用 encodeAsHTML()
。从视觉上看,它们看起来相同,但它们是否相等?显然不是!
【讨论】:
以上是关于比较 Grails GSP 中的字符串的主要内容,如果未能解决你的问题,请参考以下文章
Grails 2.x-包括所有GSP文件中的Javascript / Jquery库