2016-06-01 3 views
0

Je souhaite enregistrer les données utilisateur dans la base de données. Version 2.5.3 jeune dispose pas d'un accesseur correspondant pour la liaison de données Play framework 2.5.3

Je reçois cette erreur:

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

Ma classe modèle

@Entity 
public class UserRegisterModel extends Model 
{ 
    @Id 
    @GeneratedValue 
    protected Long ID; 

    @Constraints.Required 
    protected String first_name; 
    protected String last_name; 
    protected String user_name; 

    @Constraints.Required 
    protected String password; 
    protected String password_confirmation; 

    @Constraints.Email 
    @Column(unique = true) 
    protected String email; 
} 

classe contrôleur

public Result submitUserRegistrationForm() 
{ 
    play.data.Form<UserRegisterModel> form = play.data.Form.form(UserRegisterModel.class).bindFromRequest(); 
    UserRegisterModel register = form.bindFromRequest().get(); 
} 

Aussi je veux faire correspondre le mot de passe et le mot de passe de conformité. Je devrais faire ceci dans le modèle ou le contrôleur.

Pourriez-vous s'il vous plaît me fournir un exemple de code (modèle, contrôleur) avec validation de formulaire?

+0

Ajoutez-vous des get et des sets? – marcospereira

+0

non ajouté maintenant. J'ai lu qu'ils sont générés automatiquement. –

+0

Avez-vous configuré l'enhancer de jeu? – marcospereira

Répondre

0

Comme il est indiqué dans les commentaires, vous devez ajouter le jeu-activateur tel que documenté ici:

https://www.playframework.com/documentation/2.5.x/PlayEnhancer#Setting-up

En outre, l'amplificateur fonctionne dans les conditions suivantes:

The enhancer looks for all fields on Java classes that:

  • are public
  • are non static
  • are non final

For each of those fields, it will generate a getter and a setter if they don’t already exist. If you wish to provide a custom getter or setter for a field, this can be done by just writing it, the Play enhancer will simply skip the generation of the getter or setter if it already exists.

Ainsi, vous avez deux options ici: gardez les champs protected et écrivez vos propres getters et setters ou faites le public et laissez l'enhancer générer des getters et setters requis par d'autres bibliothèques (comme la reliure de formulaire).