Thymeleaf 无法识别 Lombok 吸气剂和二传手

Posted

技术标签:

【中文标题】Thymeleaf 无法识别 Lombok 吸气剂和二传手【英文标题】:Thymeleaf not recognizing Lombok getters and setters 【发布时间】: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 可以解决问题。龙目岛在这里做什么破坏了它?

【问题讨论】:

显示您的控制器代码?因为我无法重现它,在我的机器上一切正常 将控制器方法添加到原始帖子中。 您的输入是在表单中,对吧?仅出于测试目的,我将添加简单的文本字段 &lt;p th:text="'postTitle: ' + $post.postTitle" &gt;&lt;/p&gt; 并在控制器 get 方法中使用 model.addAttribute("post", new Post()); 进行检查。这很奇怪。你没有任何不寻常的龙目岛配置吗? 是的,它在表格中。除了我使用的是 Boot 版本 1.4.0 M3 之外,没有什么不寻常的。会不会是这个原因? 不知道,但我在 1.3.5 版本上进行了测试。也许值得尝试降级 【参考方案1】:

我使用名为“isEnabled”的布尔值遇到了这个问题。将其重命名为“启用”有效。但不确定原因。

【讨论】:

请尽可能添加您的解决方案示例。

以上是关于Thymeleaf 无法识别 Lombok 吸气剂和二传手的主要内容,如果未能解决你的问题,请参考以下文章

了解 Nuxt.js 中的状态和吸气剂:吸气剂不起作用

类内的吸气剂模式?

Vuex:为啥我们用大写字母编写突变、动作和吸气剂?

吸气剂'loadingStatus'在空颤时被调用

包含 Handler 的吸气剂

没有为“FirebaseUser”类定义吸气剂“实例”