在游戏2.3.3中,实体必须设置?

时间:2014-08-22 01:44:02

标签: playframework playframework-2.3

在游戏2.1.1中,实体Login.java:

public class Login {
    @NotBlank(message = "login account cannot be empty")
    public String mobile;
    @NotBlank(message = "login password cannot be empty")
    public String password;
    public Integer ownInnId;
    public InnAdmin admin;
    public String token;
}

但是在游戏2.3.3中,发布错误:

  

play.api.Application $$ anon $ 1:执行异常[[IllegalStateException:JSR-30]       3个经过验证的属性“password”没有相应的数据访问者       绑定 - 检查DataBinder的配置(bean属性与直接fie       ld access)]]       at play.api.Application $ class.handleError(Application.scala:296)〜[play_       2.11-2.3.3.jar:2.3.3]       at play.api.DefaultApplication.handleError(Application.scala:402)[play_       2.11-2.3.3.jar:2.3.3]       在play.core.server.netty.PlayDefaultUpstreamHandler $$ anonfun $ 3 $$ anonfun       $ applyOrElse $ 4.apply(PlayDefaultUpstreamHandler.scala:320)[play_2.11-2.3.3.jar:       2.3.3]       在play.core.server.netty.PlayDefaultUpstreamHandler $$ anonfun $ 3 $$ anonfun       $ applyOrElse $ 4.apply(PlayDefaultUpstreamHandler.scala:320)[play_2.11-2.3.3.jar:       2.3.3]       在scala.Option.map(Option.scala:145)[scala-library-2.11.2.jar:na]       引起:java.lang.IllegalStateException:JSR-303验证属性'密码       '没有相应的数据绑定访问器 - 请检查您的DataBinde       r的配置(bean属性与直接字段访问)       at play.data.Form.bind(Form.java:349)〜[play-java_2.11-2.3.3.jar:2.3.3]       at play.data.Form.bindFromRequest(Form.java:221)〜[play-java_2.11-2.3.3。       罐子:2.3.3]       在controllers.Application.spLogin(Application.java:295)〜[classes /:na]       在Routes $$ anonfun $ routes $ 1 $$ anonfun $ applyOrElse $ 132 $$ anonfun $ apply $ 132。       apply(routes_routing.scala:3309)〜[classes /:na]       在Routes $$ anonfun $ routes $ 1 $$ anonfun $ applyOrElse $ 132 $$ anonfun $ apply $ 132。       apply(routes_routing.scala:3309)〜[classes /:na]       引起:org.springframework.beans.NotReadablePropertyException:无效的prope       bean类[bean.vo.Login]的rty'password':Bean属性'password'不是       adable或getter方法无效:getter的返回类型是否匹配       setter的参数类型?       在org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrappe)       rImpl.java:725)~ [spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]       在org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrappe)       rImpl.java:716)~ [spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]       在org.springframework.validation.AbstractPropertyBindingResult.getActua       lFieldValue(AbstractPropertyBindingResult.java:99)〜[spring-context-4.0.3.RELEAS       E.jar:4.0.3.RELEASE]       在org.springframework.validation.AbstractBindingResult.rejectValue(Abst       ractBindingResult.java:108)~ [spring-context-4.0.3.RELEASE.jar:4.0.3.RELEASE]       at play.data.Form.bind(Form.java:343)〜[play-java_2.11-2.3.3.jar:2.3.3]       [错误]应用程序 - 播放onError ... POST / spLogin执行异常[[IllegalS       tateException:JSR-303验证属性'password'没有对应的       用于数据绑定的访问器 - 检查DataBinder的配置(bean prope       rty与直接现场访问)]]

在游戏2.3.3中,实体必须设置好吗?

4 个答案:

答案 0 :(得分:2)

播放不会强制您定义getter / setter。您可以声明并使用它们,也可以直接访问公共字段。

在后台,Ebean仍会在编译后创建getter / setter,因此您将无法在代码中使用它们。

关于您的错误,请尝试清理您的项目,然后再次编译:

$ play clean-all
$ play compile

答案 1 :(得分:0)

如果你的问题是:

在游戏2.3.3中,使用Ebean时模型的每个属性都必须有getter和setter吗?

答案是否定的。拥有公共领域足以让ebean工作。

答案 2 :(得分:0)

你不需要吸气剂和制定者,拥有一个公共领域就足够了。

您的问题与注释有关:您应该使用@Required代替。

答案 3 :(得分:0)

Play Framework版本为2.3.8。

  activator clean
  activator clean-files
相关问题