@PropertyId 注解 "is disallowed for this location"

@PropertyId annotation "is disallowed for this location"

我遇到了这个错误,似乎找不到如何让它工作。 我的代码,简单地遵循一些 Vaadin10+ 练习:

@PropertyId("string")
final TextField stringField = new TextField("A simple string");

这不会编译,突出显示我作为此问题标题放置的错误的注释。编译错误并没有说明更多。

知道为什么它不起作用吗?作为参考,这是 eclipse (LTS) 和 Java 8 中的一个 Maven 项目,并且我在 pom 中不缺少任何依赖项,因为我从练习文件存档中复制了 pom 的工作副本。

无论如何,我只需要用它来使用 javax 验证器进行 bean 验证,所以我 不需要 它那么难。我只是想了解它为什么会损坏。

您提到的错误消息发生在例如当声明用于方法的注释改为用于例如class 或实例字段。

@PropertyId 在 Vaadin 中定义为 @Target({ ElementType.FIELD }) ,这意味着它应该用于实例字段。由于您没有显示导致问题的代码的完整上下文,我可以想象两个潜在的原因:

  1. 您的 stringField 是方法内的局部变量,而不是 class.
  2. 中的实例字段
  3. 您不小心从 com.vaadin.flow.data.binder.PropertyId.
  4. 中导入了其他 @PropertyId 注释而不是预期的注释