【发布时间】:2016-10-12 10:30:18
【问题描述】:
Lombok 插件已安装。使用 IntelliJ 15。模型结构显示了 getter 和 setter,但我从 Thymeleaf 收到以下错误。
错误:
bean 类 [com.blog.domain.Post] 的无效属性“postTitle”:bean 属性“postTitle”不可读或具有无效的 getter 方法:getter 的返回类型是否与 setter 的参数类型匹配?
型号:
@Entity
public @Data class Post {
@Id
@GeneratedValue
private Long id;
@NotEmpty
private String postTitle;
@NotNull
@ManyToOne
private Author postAuthor;
@NotNull
@Temporal(TemporalType.DATE)
private Date postDate;
@Column(columnDefinition = "TEXT")
private String postTeaser;
@Column(columnDefinition = "TEXT")
private String postBody;
}
加载表单的控制器方法:
@GetMapping("/create")
public String postForm(Post post, Model model) {
model.addAttribute("authors", authorService.getAllAuthors());
return "postform";
}
发生错误的字段:
<input id="postTitle" type="text" th:field="*{postTitle}" />
任何想法我哪里出错了?手动添加 getter 和 setter 可以解决问题。龙目岛在这里做什么破坏了它?
【问题讨论】:
-
显示您的控制器代码?因为我无法重现它,在我的机器上一切正常
-
将控制器方法添加到原始帖子中。
-
您的输入是在表单中,对吧?仅出于测试目的,我将添加简单的文本字段
<p th:text="'postTitle: ' + ${post.postTitle}" ></p>并在控制器 get 方法中使用model.addAttribute("post", new Post());进行检查。这很奇怪。你没有任何不寻常的龙目岛配置吗? -
是的,它在表格中。除了我使用的是 Boot 版本 1.4.0 M3 之外,没有什么不寻常的。会不会是这个原因?
-
不知道,但我在 1.3.5 版本上进行了测试。也许值得尝试降级
标签: java intellij-idea spring-boot thymeleaf lombok