2016-06-01 1 views
0

ユーザデータをデータベースに保存します。 プレイバージョン2.5.3には、データバインディングに対応するアクセサがありません。プレーフレームワーク2.5.3

私はこのエラーを取得しています:

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

私のモデルクラス

@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; 
} 

Controllerクラス

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

また、パスワードと一致するパスワードに一致させたい。私はモデルやコントローラでこれを行う必要があります。

フォーム検証でサンプルコード(モデル、コントローラ)を教えてください。

+0

ゲットとセットを追加していますか? – marcospereira

+0

は今追加されていません。私は彼らが自動的に生成された読んだ。 –

+0

プレイエンハンサーを設定しましたか? – marcospereira

答えて

0

コメントで述べたように、あなたはここに記載されているようにプレイエンハンサーを追加する必要があります。

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

また、エンハンサーはちょうど次の条件で動作します:

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.

ので、ここには2つのオプションがあります:フィールドをprotectedのままにしておき、独自のゲッターとセッターを書くか、公開し、エンハンサーに他のライブラリー(フォームバインディングなど)で必要なゲッターとセッターを生成させます。

関連する問題