2

http://www.playframework.com/documentation/2.1.x/JavaForms

このページには、指定されたデータモデルの例では、

public class User {
    public String email;
    public String password;
}

次のように、Map をフォームにバインドし、データ モデルを設定できます。

@Test
public void bindTest() {
    Form<User> form = Form.form(User.class);

    Map<String,String> anyData = new HashMap<String,String>();
    anyData.put("email","bob@gmail.com");
    anyData.put("password", "password");

    User user = form.bind(anyData).get();

    assertEquals("bob@gmail.com", user.email);
    assertEquals("password", user.password);
}

これはうまくいきません。assertEquals で失敗します。ただし、セッターとゲッターをユーザーのパブリック フィールドに追加すると、機能します。このような:

public class User {
    public String email;
    public String getEmail() { return email; }
    public void setEmail(String value) { email = value; }

    public String password;
    public String getPassword() { return password; }
    public void setPassword(String value) { password = value; }
}

ゲッターとセッターを追加せずにこれを実行できるようにしたいと思います。

結局のところ、ページには「注: 基になるバインディングは Spring データ バインダーを使用して行われます」と表示されます。さて、それはおそらくSpringのデータバインディングの仕組みに関係していますが、ゲッターとセッターなしでパブリックフィールドが仕事をするだろうと確信しています.

助言がありますか?

4

0 に答える 0