首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JSP Bean 屬性讀取失敗:缺少 getter 方法導致 Cannot find method to read property

     編輯:程式設計疑難解答

錯誤訊息

Cannot find a method to read property 'shopname' in a bean of type 'mybean.User'

原因

JSP 標籤 <jsp:getProperty name="user" property="shopname"/> 或 EL ${user.shopname} 依賴 **JavaBean 規範**:屬性 shopname 必須有對應的 **getter 方法** getShopname() (或 getShopName() 依慣例)。

修正:在 User Bean 中加入 getter

package mybean;

public class User {
    private String shopname;
    // 其他欄位...

    // 必須有公開 getter
    public String getShopname() {
        return shopname;
    }
    // 建議也加 setter
    public void setShopname(String shopname) {
        this.shopname = shopname;
    }
}

命名慣例對照表

屬性名 (property)Getter 方法名Setter 方法名
shopnamegetShopname()setShopname(String)
shopNamegetShopName()setShopName(String)
userIDgetUserID()setUserID(String)
isActive (boolean)isActive() / getActive()setActive(boolean)

常見誤區

  • 欄位宣告為 public String shopname; **無 getter 仍會失敗**,JSP/EL 只找方法不直接存取欄位。
  • 方法名大小寫錯誤:getshopname() (小寫 s) 不符合規範。
  • 屬性為 boolean 時 getter 慣例為 isXxx(),但 getXxx() 也被接受。

驗證方法

<%-- 測試 Bean 是否符合規範 --%>
<jsp:useBean id="user" class="mybean.User" scope="session"/>
<jsp:setProperty name="user" property="*"/>
<%-- 若無誤誤,表示 getter/setter 正確 --%>
Shopname: <jsp:getProperty name="user" property="shopname"/>

總結

Cannot find method to read property 'xxx' 直接原因是 **Bean 缺少對應的公開 getter 方法**。補上 getXxx() (屬性首字母大寫) 即可解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved