1. 程式人生 > >web開發時jsp中表單回顯character型別的資料需注意

web開發時jsp中表單回顯character型別的資料需注意

當我們後臺在做表單資料回填時,經常有遇到一些莫名其妙的錯誤,導致自己無法找到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的時間。謝謝觀看!