2016-04-27 59 views
2

我想在Spring MVC應用程序的.jsp頁面上使用JSTL條件語句。JSTL條件在春天

我有一個叫做user的模型和一個叫做gender的屬性。當我在.jsp中使用此行時,會顯示性別值:

${user.gender} 

具體而言,在此情況下,值爲'M'。但是,如果值爲'M',我想顯示一個文字'男'。根據我發現的文檔,我的代碼應該是:

<c:if test="${user.gender=='M'}">Male</c:if> 

但是,那不顯示任何內容。任何想法我在這裏做錯了嗎?

性別變量在我的用戶模型類中定義爲一個字符串。

回答

-1

嘗試

<c:if test="${user.gender.equals('M')}">Male</c:if> 
+0

這最終調用==確實在JSTL相同的功能,不會產生任何不同結果。 –

+0

that not true ==檢查字符串是否引用同一個實例對象,而.equals檢查字符串的內容是否相同。因爲字符串是引用類型 –

+0

==在Java中檢查引用,但不在EL中。 請參閱此處的「操作員」部分: http://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html '關係:==,eq,!=,ne,<, lt, >,gt,<=, ge, > =,le。可以針對其他值或針對布爾,字符串,整數或浮點字面值進行比較。最近我重構了很多舊的JSP頁面以使用EL,並且我保證==不會*檢查引用。 –

1

我找到了解決。事實證明,我的$ {user.gender}值是出於某種原因用空格填充的。因此,我必須修剪這些空間以便有條件工作。對於我使用了JSTL trim功能:

<c:set var="genderstring" value="${user.gender}"/> 
<c:set var="genderstringtrimmed" value="${fn:trim(genderstring)}" /> 

然後,我改變了條件,現在該功能:

<c:if test="${genderstringtrimmed=='M'}">Male</c:if>