我开发了一个引用 2 个域对象属性的 JSP。 在这里,我将其中一个对象作为域,并尝试使用 Collection 对象将属性设置为其他域对象。但是 JSP 没有被加载并且只给出一个异常:
org.springframework.beans.NotReadablePropertyException:bean 类 [com.persistent.eap.domain.Auction] 的无效属性“拍卖”:Bean 属性“拍卖”不可读或具有无效的 getter 方法:是否返回类型getter 的参数类型是否与 setter 的参数类型匹配?
最佳答案
错误听起来像是您的 bean 属性不符合 java bean 标准。
必须像这样指定 java bean 属性:
private [type] [name];
public void set[Name]([type] [name]);
public [type] get[Name]();
如果[type]
是boolean
,那么也可以(并且应该)调用get方法
public [type] is[Name]();
有效示例:
private int foo;
public void setFoo(int foo){this.foo=foo;}
public int getFoo(){return this.foo;}
private boolean bar;
public void setBar(boolean bar){this.bar=bar;}
public boolean isBar(){return this.bar;}
重要的是:
- 命名约定
- setter name = "set"+ 字段名(首字母大写)
- getter name = "get"+ field name (首字母大写)
(或者,仅适用于 boolean 型字段):“is”+ 字段名(首字母大写)
- 正确的类型
- setter 必须有一个与字段类型相同的参数,返回类型必须为 void(例如,不允许使用 fluent setter)
- getter 必须没有参数,返回类型必须是字段类型
引用:
- JavaBean conventions (维基百科)
关于java - 如何使用单一表单将属性设置为 2 个域对象,这里 1 个域对象充当 formbacking 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615315/