關於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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章