24

当我将以下代码添加到我的项目中时

Form<User> filledForm2 = userSignupForm.bindFromRequest();

它通过显示一条错误消息停止工作,其中指出:

Execution exception
[IllegalStateException: JSR-303 validated property 'Password' does not have a corresponding accessor for data binding - check your DataBinder's configuration (bean property versus direct field access)]

我的User课是这样的:

class User{
String username;
String Password;
}

现在如何在 java play 框架中检查/修改 DataBinder 的配置?

4

5 回答 5

50

实际上这不应该发生,因为 Play 会自动生成 getter 和 setter,请参阅 Guillaume 的评论

因此,您的 IDE 可能会导致问题,例如 Guillaume 对 Eclipse 的评论。或者您的 sbt 缓存已损坏并需要清理,您可以使用它play clean-all在此处阅读

顺便说一句,将您的Password属性更改为password可能会导致重新生成缓存并因此解决了该问题。

更新:

对于使用 的 Play 的更新版本,activator以下似乎是最新的等价物:

activator cleanactivator clean-files

于 2013-07-22T09:32:40.337 回答
2

我的环境是 Mac OS X 10.9.5 并运行带有 Vagrant 的 CentOS 7。在 CentOS 上发生了同样的问题,但在 Mac OS 上却没有。Play 框架版本为 2.3.8。

下面的命令在我的情况下不起作用:

  activator clean
  activator clean-files

虽然很奇怪,但我必须定义 getter 和 setter 才能在 CentOS7 上成功运行 Play Framework,如下所示:

@Entity
public class Message extends Model{

    @Id
    public long id;

    @Constraints.Required
    public String name;


    //Add getter and setter to work successfully...
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
于 2015-03-14T13:06:40.117 回答
0

我已经通过使用activator clean && activator clean-files之前解决了这个问题activator dist

于 2018-02-14T17:30:47.867 回答
-1

我在尝试int使用 @Min(value = 0).

通过将注释放在 getter 上并结合@Valid我的 bean 来解决。

于 2017-08-21T09:45:47.100 回答
-5

Had the same issue...

To remove this error, you should define your variables as public.

class User{
   public String username;
   public String password;
}
于 2014-01-28T11:00:17.510 回答