比较 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库

Grails 中 GSP 中的 if 语句

从 grails 中的 gsp 页面进行 ajax 调用

Grails:在 gsp 中显示创建的图像

如何从 grails 视图文件夹中的 create.gsp 表单中隐藏几个字段?

如何将 GSP 呈现为字符串?