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的时间。谢谢观看!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值