今天用帮朋友找代码错误的时候,发现了一个错误
Property 'Id' not found on type com.mhz.core.po.Student
就是说我要的值在po类中找不见
能找见啊喂,一步一步的注释掉,一步一步的输出,发现直到传值到jsp前所有的流程都是正确的,后台也可以正常输出我要找的值
所以就断定问题出在前端上
于是乎,把jsp中用到Id的地方用<!-- --!>注释掉
这中间还发现了个问题,jsp注释不能用上面的,用了服务器并不会给你注释,也就是说这个注释在jsp中算是个假的注释
要用<%-- --%>,不用的话就会出现给你的注释报错的情况。。。。真的是第一次见,还是基础不扎实
扯远了,回到正题
看el表达式,发现前面所有用对象中其他值的表达式都没有出错,唯一的区别就是他这个因为要和数据库匹配所以用了大写
el中改回小写,重启服务器,测试成功
于是上网查原理,发现el找值的时候只是把值的第一个字母大写然后拼接成getter方法来找,首字母大写的话就会找第二个。。
然后第二个不是大写就没找见,也就没法拼接getter,也就在el的眼里就没有这个值
所以总结:
当el表达式首字母大写,会判断第二个字母大小写,小写,抛异常;大写,则直接拼接get,形成getter方法 当el表达式首字母小写,会判断第二个字母大小写,大写,必须第一个字母大写;否则无法获取值 el首字母大写,至少第二个字母必须大写。
完毕
博主帮朋友排查代码错误,发现问题出在前端JSP。在JSP中,常规注释无效,需用<%-- --%>。进一步排查发现,EL表达式取值时因大小写问题出错,EL找值是将值首字母大写拼接getter方法,首字母大写会找第二个,若第二个非大写则无法拼接getter,导致取值失败。
791

被折叠的 条评论
为什么被折叠?



