用EL表达式遇到的一个小问题

coffee2368521 2009-04-11 12:29:16
web代码:${sessionScope.member.qQ } member是一个与java中对应的值对象Memberinfo
java代码:在Memberinfo中有属性private int qQ; 有get、set方法
异常:Property {1} not found on type net.coffee.vo.MemberInfo
为什么我把${sessionScope.member.qQ }改成${sessionScope.member.QQ}就好用了?不是说要与值对象中的属性相对应吗?
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
另外需要说明的是,根据 JavaBeans 规范,JavaBean 中的属性名是通过 get 方法或者是 set 方法而来的,
并不是通过属性名来找 get/set 方法的。

有兴趣的话可以去看看 JavaBeans 的核心类:java.beans.Introspector


fangpengyu 2009-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zl_bright 的回复:]
属性命名时,
忌讳第一个字母小写,第二个字母大写

${sessionScope.member.xx}中
并不是直接访问属性xx,而是通过访问相应的getter方法getXx()来获得值的

${sessionScope.member.qQ}改成${sessionScope.member.QQ}就好了,
只是因为"qQ"被解析成了其他getter()方法,
而"QQ"正好被解析成了正确的getter()方法.
[/Quote]

言之有理
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zl_bright 的回复:]
是因为"qQ"这种命名方式不符合JavaBean的命名规范
[/Quote]

是的,准确的说 JavaBeans 规范中所规定的属性名字的开头两个字母要么全部是小写,
要么全部是大写,一大一小或者一小一大都是不合法的属性名称。
台城柳月 2009-04-11
  • 打赏
  • 举报
回复
属性命名时,
忌讳第一个字母小写,第二个字母大写

${sessionScope.member.xx}中
并不是直接访问属性xx,而是通过访问相应的getter方法getXx()来获得值的

${sessionScope.member.qQ}改成${sessionScope.member.QQ}就好了,
只是因为"qQ"被解析成了其他getter()方法,
而"QQ"正好被解析成了正确的getter()方法.
台城柳月 2009-04-11
  • 打赏
  • 举报
回复
是因为"qQ"这种命名方式不符合JavaBean的命名规范
zhuwen9 2009-04-11
  • 打赏
  • 举报
回复
去实体看一下你的set 和 get 方法 应该是 qQ =QQ 而不是this.qQ=qQ
我的理解 是EL表达式是根据传的参数来引用的 get 和 set方法的参数都是String QQ 所以只能用
${sessionScope.member.QQ}
原因是楼上几位达人说的命名不规范
liup19751227 2009-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zl_bright 的回复:]
属性命名时,
忌讳第一个字母小写,第二个字母大写

${sessionScope.member.xx}中
并不是直接访问属性xx,而是通过访问相应的getter方法getXx()来获得值的

${sessionScope.member.qQ}改成${sessionScope.member.QQ}就好了,
只是因为"qQ"被解析成了其他getter()方法,
而"QQ"正好被解析成了正确的getter()方法.
[/Quote]

正确

81,110

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧