3
votes

in play 2.1.1 , entity 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;
}

but in play 2.3.3 , post with error:

play.api.Application$$anon$1: Execution exception[[IllegalStateException: JSR-30 3 validated property 'password' does not have a corresponding accessor for data binding - check your DataBinder's configuration (bean property versus direct 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] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun $applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.3.jar: 2.3.3] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun $applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.3.jar: 2.3.3] at scala.Option.map(Option.scala:145) [scala-library-2.11.2.jar:na] Caused by: java.lang.IllegalStateException: JSR-303 validated property 'password ' does not have a corresponding accessor for data binding - check your DataBinde r's configuration (bean property versus direct field access) 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. jar:2.3.3] at controllers.Application.spLogin(Application.java:295) ~[classes/:na] at Routes$$anonfun$routes$1$$anonfun$applyOrElse$132$$anonfun$apply$132. apply(routes_routing.scala:3309) ~[classes/:na] at Routes$$anonfun$routes$1$$anonfun$applyOrElse$132$$anonfun$apply$132. apply(routes_routing.scala:3309) ~[classes/:na] Caused by: org.springframework.beans.NotReadablePropertyException: Invalid prope rty 'password' of bean class [bean.vo.Login]: Bean property 'password' is not re adable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrappe rImpl.java:725) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrappe rImpl.java:716) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] at org.springframework.validation.AbstractPropertyBindingResult.getActua lFieldValue(AbstractPropertyBindingResult.java:99) ~[spring-context-4.0.3.RELEAS E.jar:4.0.3.RELEASE] at 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] [error] application - play onError...POST /spLogin Execution exception[[IllegalS tateException: JSR-303 validated property 'password' does not have a correspondi ng accessor for data binding - check your DataBinder's configuration (bean prope rty versus direct field access)]]

in play 2.3.3, The entity must have get set?

4

4 Answers

2
votes

Play does not force you to define getters/setters. You can either declare and use them or access the public fields directly.

In the background Ebean will still create getters/setters after compilation, so you will not be able to use them in your code.

Regarding your error, try to clean your project and then compile it again:

$ play clean-all
$ play compile
0
votes

If your question is :

In play 2.3.3, does every attribute of a model must have getters and setters while using Ebean ?

The answer is no. Having public field is enough for ebean to work.

0
votes

You don't need getters and setters, having a public field is enough.

Your problem is with your annotations: you should use @Required instead.

0
votes

Play Framework version is 2.3.8.

  activator clean
  activator clean-files