天天看點

關于java變量名的命名規範

嚴重: 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。