我不断收到此错误,现在我不知道为什么。
引起:org.springframework.beans.NotReadablePropertyException:bean类[java.util.ArrayList]的无效属性“所有者”:Bean属性“所有者”不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配吗?
我尝试过使用
th:field="*{owner}"
,
th:field="*{Owner}"
和
th:field="*{setOwner}"
但仍然遇到同样的错误。
控制器
@RequestMapping("/wqrms/customer/create")
public String customerCreate(Model model) {
List<Customer> customer = customerService.listAll();
model.addAttribute("customer", customer);
return "/views/wqrms/customer/create";
}
型号
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String owner;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getOwner() {
return owner;
}
public void setOwner(long id) {
this.owner = owner;
}
}
百里香叶
<form action="#" th:action="@{/wqrms/customer/save}" th:object="${customer}" method="post">
<div class="form-row">
<div class="form-group col-md-6">
<label>Customer Name</label>
<input class="form-control" placeholder="Customer Name" required th:field="*{owner}">
</div>
您错误地编写了 getOwner 的代码。所有者的数据类型是字符串,并且您已将方法声明为 long。 请将代码重写为以下内容。
public String getOwner() {
return owner;
}
提示 - 编码时使用 IDE,它将帮助您轻松找出这些编译时错误。
您在为实体类创建 Getter 和 Setter 时犯了错误。以及您的程序如何成功编译。因为里面
public long getOwner() {
return owner;
}
使用 long 作为返回类型但从 getter 返回 String 的方法。 像这样重写你的类
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String owner;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
}
或者您可以选择任何 IDE 例如:Eclipse、IntelliJ 来编写类。
问题已解决!该控制器应该用于列出客户。改成
`@RequestMapping("/wqrms/customer/create")
public String customerCreate(Model model) {
Customer customer = new Customer();
model.addAttribute("customer", customer);
return "/views/wqrms/customer/create";
}`
谢谢大家!
我无法解释它是如何工作的,但这就是我改变的。我的 getter 方法是
public int getMaximumInv()
我将其重命名为 public int getMaximuminv()
。错误消失了。
POJO 中的 getter/setter 不正确。
为什么要使代码更具可读性的经典示例。
发生这种情况是因为不必要的样板冗余代码。
使用 this-(LOMBOK) dependency/jar ,所有降低可读性的代码都将被删除。 Lombok 也是 spring-boot 启动器的一部分。