web開發時jsp中表單回顯character型別的資料需注意
阿新 • • 發佈:2019-02-17
當我們後臺在做表單資料回填時,經常有遇到一些莫名其妙的錯誤,導致自己無法找到bug所在,我在這聊聊我所遇到的一些坑!
Character型別資料在el表示式中無法進行判斷
在將Character型別的性別屬性值放在input標籤中進行判斷,是無法進行判斷的,因為el表示式在進行比較時是沒有字元型別的。演示就比如我出現問題的下面這段jsp程式碼:
<td>聯絡人性別:<td>
<input type="radio" value="1" name="lkm_gender" ${linkMan.lkm_gender == '1'? 'checked':'' }>男
<input type ="radio" value="2" name="lkm_gender" ${linkMan.lkm_gender_s == '2'? 'checked':'' }>女
</td>
我的LinkMan實體的gender屬性是Character型別,在從域中拿到LinkMan物件,取出來的linkMan.lkm_gender是是Character型別,而el表示式中'1'或'2'卻是字串型別的,所以在回顯時一直沒有效果,這個問題困擾我半個小時,經過很多除錯過程,請求引數中的資料明明是對的,但怎麼就是不能返回到頁面,於是我試著將'1'和'2'的ASCII碼值填入進去之後結果才正常顯示出來,('1' -->49,'2'--->50),這樣子寫程式碼是不是很low啊。不過我有更進步的方法,在這分享給大家!
el表示式取值是通過set方法進行取值的,根據前面的錯誤經驗,已經知道了問題的所在之處,為了避免去查ASCII碼值的這種情況,我在實體類中寫了一個set方法專門用來獲取字串型的性別,大家請看程式碼:
public Character getLkm_gender() {
return lkm_gender;
}
**public String getLkm_gender_s() {
if(lkm_gender!=null ){
switch (lkm_gender) {
case '1':
return "男";
case '2':
return "女";
default:
return "";
}
}else
return "";
}**
第一個getLkm_gender()方法是原始屬性的set方法,是用來獲取字元型的gender值。
第二個getLkm_gender_s()方法是新新增的用來獲取字串型的gender值,這個方法放在el表示式中才能得到真正的應用,請看更新後的jsp程式碼段:
<td>聯絡人性別:<td>
<input type="radio" value="1" name="lkm_gender" ${linkMan.lkm_gender == '男'? 'checked':'' }>男
<input type="radio" value="2" name="lkm_gender" ${linkMan.lkm_gender_s == '女'? 'checked':'' }>女
</td>
經過測試,程式碼可以正常執行,希望看到這篇文章的開發人員可以節省解決bug的時間。謝謝觀看!