Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Playframework JSR-303 validated "field" does not have a corresponding accessor for data binding

Tags:

When I have added this following code to my project

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

It has stopped working by showing an error message which states:

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)] 

My User class was like that:

class User{ String username; String Password; } 

Now how can to check/modify DataBinder's configuration in java play framework?

like image 769
sadaf2605 Avatar asked May 31 '13 14:05

sadaf2605


2 Answers

Actually this shouldn't be happening, as Play automatically generates getters and setters, see Guillaume's comment.

Therefore it's possible that your IDE is causing issues e.g. Guillaume's comment re Eclipse. Or that your sbt cache is corrupt and needs cleaning, which you can do with play clean-all (read about it here)

By the way, changing your Password attribute to password may have caused the cache to be re-generated and therefore fixed the issue.

Update:

For more recent versions of Play that use activator, it seems the following are the the up-to-date equivalents:

activator clean and activator clean-files

like image 112
Darren Shewry Avatar answered Sep 28 '22 02:09

Darren Shewry


My environment is Mac OS X 10.9.5 and run CentOS 7 with Vagrant. On CentOS the same problem happended, but on Mac OS didn't. Play Framework version is 2.3.8.

The commnad below didn't work in my case:

  activator clean   activator clean-files 

Though it's so weird, I had to define getter and setter to work Play Framework on CentOS7 successfully as following:

@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;     } } 
like image 40
Ataru Avatar answered Sep 28 '22 01:09

Ataru