Thymeleaf无法识别Lombok的getter和setter方法

4

安装了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可以解决问题。Lombok在这里做了什么导致出现错误?

能否让我看一下你的Controller代码?因为我在我的电脑上无法复现,所有东西都可以正常工作。 - Enigo
将控制器方法添加到原始帖子中。 - Lithicas
你的输入是以表单形式提交的,对于测试目的,我会添加一个简单的文本字段 <p th:text="'postTitle: ' + ${post.postTitle}" ></p> 并在控制器的 GET 方法中使用 model.addAttribute("post", new Post()); 进行检查。这很奇怪,难道你没有任何不寻常的 lombok 配置吗? - Enigo
不知道,但我在1.3.5版本上测试过。也许值得尝试降级。 - Enigo
@Lithicas,你解决了那个问题吗? - Enigo
显示剩余5条评论
2个回答

0

我在使用一个名为“isEnabled”的布尔变量时遇到了问题。将其重命名为“enabled”后问题得以解决。不过我不确定原因是什么。


如果可能的话,请添加解决方案的示例。 - Anhayt Ananun

0
如果您从某个地方获取了Post对象,请确保它被初始化为普通类而不是Optional类。

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助他人理解如何解答所提出的问题。你可以在帮助中心找到更多关于如何撰写好回答的信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接