最近的一個項目中,使用到了JSTL標籤和EL表達式,希望儘量的擺脫用scrilplet的習慣,使項目的代碼更加優雅。哈!
但在項目開發的過程中,碰到了一些小細節,不得不要注意。
其中的一個是JSTL中使用EL的時候,在一個沒有注意的小地方,得不到預期的輸出結果,還令我花費了整整一天多的時間來debug,這個代價不可以不說是巨大的,也同時批評一下自己的基礎知識有所欠缺,要加強。
其他不說,上代碼:
<c:set var="aaa" value="${111*2}" />
<c:choose>
<c:when test="${aaa <= 0} ">aaa</c:when>
<c:when test="${aaa == 222} ">bbb</c:when>
<c:when test="${aaa > 222} ">ccc</c:when>
<c:otherwise>No comment sir...</c:otherwise>
</c:choose>
<br>
以上代碼的結果是多少呢?謎底揭開,答案是:No comment sir...
就是這麼簡單的計算和判斷操作,由於不夠細心,所以得不到自己預期的答案。
原因就在於when的test的表達式裏的一個細節:空格!!
所以,正確的寫法如下:
<c:set var="aaa" value="${111*2}" />
<c:choose>
<c:when test="${aaa <= 0}">aaa</c:when>
<c:when test="${aaa == 222}">bbb</c:when>
<c:when test="${aaa > 222}">ccc</c:when>
<c:otherwise>No comment sir...</c:otherwise>
</c:choose>
<br>
答案就是:bbb