java - 如何使用单一表单将属性设置为 2 个域对象,这里 1 个域对象充当 formbacking 对象

标签 java spring spring-mvc annotations

我开发了一个引用 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;}

重要的是:

  1. 命名约定
    • setter name = "set"+ 字段名(首字母大写)
    • getter name = "get"+ field name (首字母大写)
      (或者,仅适用于 boolean 型字段):“is”+ 字段名(首字母大写)

  2. 正确的类型
    • setter 必须有一个与字段类型相同的参数,返回类型必须为 void(例如,不允许使用 fluent setter)
    • getter 必须没有参数,返回类型必须是字段类型

引用:

关于java - 如何使用单一表单将属性设置为 2 个域对象,这里 1 个域对象充当 formbacking 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615315/

相关文章:

java - 使 OS X 屏幕 JMenuBar 跨窗口一致工作的最佳方法是什么?

spring - 如何在java配置文件(非XML)中启用Spring MVC应用程序支持的异步

java - 在类路径资源中指定文件

java - 点燃缓存错误

java - Samsung Galaxy 7"(GT-P6210) 未检测到 USB 调试?

java - 如何从 Worker 获取输出数据? (MVVM + WorkManager + Room)

mysql - Spring Boot、Spring Security、MySQL - CustomUserDetailsS​​ervice 始终导致错误 "Invalid Username or Password"

Spring:Lookup方法注入(inject)、Provider<T>、ObjectFactory和factoryBean之间的区别

java中spring的bean作用域和生命周期

java - 可移动的 JPanel 或类似 JPanel 的小部件