您的位置:首页 > 编程语言 > Java开发

关于java变量名的命名规范

2011-08-30 09:35 399 查看
严重: Servlet.service() for servlet action threw exception

javax.servlet.jsp.JspException: No getter method for property: "×××" of bean: "×××"

 

出现这个错误后开始在网上查找看看有没有谁碰到过同样的问题,以便找到解决方法。在这里把我查到的解决方法

和个人的理解总结如下:

1、从错误提示来看, 是在相应的bean中没有getter方法,所以先看一下bean中是不是对相应的变量没有生成

getter方法,查看一下我的User.java中, 已经有了所有属性的getter方法, 看来不是这个原因。

2、变量名的命名规范:struts机制对大小写是敏感的,类的属性名首字母不能用大写,比如userName就不能写成

UserName,这样在生成getter方法时就会把变量的首字母改成大写再在前面加上get构成getUserName()。我的

User.java中的变量名首字母都是小写的, 看来问题还不是这么简单。

3、jsp页面中的property对应的变量句一定要与相应的类的变量句严格一致。很遗憾,我的问题也不是出在这里。

4、自动生成getter setter时,如果未自动加上this.,那么也有可能会报这个错误

查了这么多的解决方法, 我的问题还是没有解决, 正陏闷时我的一位师兄来到实验室, 他是一位值得尊敬的编程

高手, 我把问题和他说了, 他也是按照我上面查到的解决方法一一排除了可能性,然后单眇执行程序,突然发现

在执行到list = session.createQuery("select userName,userPwd,userType,userDiscription from

User").list();一句时, list中的内容不是User类型的, 而是Object类型的。Object类中当然不会有getter方法

了! 看来原因找到了。解决方法:将list = session.createQuery("select

userName,userPwd,userType,userDiscription from User").list();改为-->list = session.createQuery("from

User").list();这样查出来的才是内容为User的List否则只是包含userName,userPwd,userType,userDiscription几

个属性的Object的List。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息