【问题标题】:jstl bug while comparing strings UTF-8.(Spring Security - principal.username)比较字符串 UTF-8 时出现 jstl 错误。(Spring Security - principal.username)
【发布时间】:2015-03-07 00:09:09
【问题描述】:

我的 jsp 页面有:

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>

...

<c:set var="currentUser">
  <sec:authentication property = "principal.username"/>
</c:set>

<c:if test = "${currentUser eq user.login}" >

...
当我比较英语单词时,评估返回 true,但当涉及到俄语等时 - false
一开始我认为这可能是 jsp 编码的问题,但是当我运行类似的东西时

<c:if test = "${'Андрей' eq 'Андрей'}" >

它来了真的

甚至

<c:if test = "${currentUser eq 'Андрей'}" > turns `false`

最后我想添加浏览器显示值 ${currentUser}${user.login} 相同

${currentUser}<br>
${user.login}

来了

Андрей
Андрей

提前感谢您的回复!

【问题讨论】:

标签: java jsp spring-mvc spring-security jstl


【解决方案1】:

请试试这个测试页。这个对我有用。

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%
   pageContext.setAttribute( "currentUser", "Андрей");
%>
Test page.
<c:if test = "${currentUser eq 'Андрей'}" >
     Yes, they are equal.
</c:if> 
<c:if test = "${currentUser eq currentUser}" >
     Yes, they are equal. currentUesr is ${currentUser}
</c:if> 

输出:
测试页面。是的,他们是平等的。是的,他们是平等的。 currentUesr 是 Андрей

【讨论】:

  • 是的,对不起。您的示例正常工作)我丢失了一些需要提及的额外信息:&lt;c:set var="currentUser"&gt; &lt;sec:authentication property = "principal.username"/&gt; &lt;/c:set&gt; 在这些行之后我的评估变为错误。好像是这样
  • 你是说问题出在 JSTL 之外?
  • 是的。问题出在 Spring Security 中。感谢您的回复。答案是 。结果证明这是一个重复的问题)
猜你喜欢
  • 2010-10-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多