今天發現個問題:el表達式中<c:if>判斷無效
el表達式中<c:if>判斷的問題:下面的方式根本就無效:把它當成字符串處理:<c:if test="${item.word_source == '0'}">採集</c:if>
<c:if test="${item.word_source == '1'}">配置</c:if>
或是<c:if test="${item.word_source eq '0'}">採集</c:if><c:if test="${item.word_source eq '1'}">配置</c:if>換成<c:choose> 表籤 還是不行把它當做數組處理:(頁面直接報錯)<c:if test="${item.word_source == 0}">採集</c:if><c:if test="${item.word_source == 1}">配置</c:if>或是<c:if test="${item.word_source *1 == 0}">採集</c:if><c:if test="${item.word_source*1 == 1}">配置</c:if>可是 ${item.word_source} 可以取到值 0 或是1 可是比較時出錯。網上大多數都是圍繞這邊博文來講:http://baomw.iteye.com/blog/177373
然後我去查看數據庫中 word_source 發現其類型是char(2),情況和上面介紹的 都是因爲是char類型轉化的時候出錯導致的。可是把數據庫中的字段類型改成varchar,我只是個小小的程序員,這個我改不了呀。命苦呀,知道問題所在,也知道怎麼改正,可是發現自己沒有權限。因爲我的沒有實體類,直接從jdbctemplate查詢出list列表,不能對類的屬性直接進行強制轉換成String類型。
想找其他方法看看能不能避開修改數據庫字段類型,發現我還是嫩了點,真爲自己的智商抓急呀。只能問問同事:
sql查詢語句:
select t.*,to_char(word_source) as wordSource from table_name t //這樣測試不行select t.*,to_number(word_source) as wordSource from table_name t //這樣測試成功
<c:if test="${item.wordSource == 1}">配置</c:if>jsp頁面:<c:if test="${item.wordSource == 0}">採集</c:if>
實在不行的話:你可以對 jdbcTemplate查詢出的list進行處理:
for (Map<String, Object> map : list){
//取到該值強制類型後再添加到list中
String val=(String) list.get(0).get("word_source");
}