在游戏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中,实体必须设置好吗?
答案 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