2015-01-08 45 views
1

我的JSP頁面:JSTL錯誤而比較字符串UTF-8(春季安全 - principal.username)

<%@ 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} as sa我

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

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

預先感謝您的回覆!

+0

好趕上,因爲你走了這麼遠,你可以調試corelib源http://grepcode.com/file/repo1.maven.org/maven2/taglibs/standard/1.1.2/org/ apache/taglibs/standard/lang/support/ExpressionEvaluatorManager.java#63 –

回答

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是Андрей

+0

是的,對不起。您的示例正常運行)我已經丟失了一些需要提及的附加信息: ' '我的評價變成了錯誤。似乎很 – InsFi

+0

你是說問題出在JSTL之外? – rickz

+1

是的。問題出在Spring Security。感謝您的回覆。答案是。事實證明它是一個公開的問題) – InsFi