3

私はここで春のデータバインダーの素晴らしい包括的な説明を読みました: https://stackoverflow.com/a/3705855/1828986

私の問題にはもう少し知識が必要です。それを強調しましょう。

複雑なフィールドを持つ Person オブジェクトがあります。たとえば、通りと番号のフィールドとの連絡先です。したがって、次のように説明できます。

public class Contact {
    private String street;
    private int number;
// setters & getters
};
public class Person {
    private String name;
    private int age;
    private Contact contact;
// setters & getters
};

私は春がそれを次の入力フィールドとしてhtml形式に表現することを認識しました:
名前、年齢、連絡先.通り、連絡先.番号

取得したときに Person オブジェクトに戻すことができると思います。

Spring バインダーを「雇って」、私が提供するテキスト データのオブジェクト (HttpRequest オブジェクトではない) を作成したいと思います。たとえば、私はファイルを持っています:

name       age        street       number
John       22         MHDrive      2187
Will       32         MHDrive      3212

上記の任意の構造を提供でき、Person オブジェクトを取得したい :)

例えば

Person p = springBinderSomething({{"name","John"},{"age","22"},{"street","MHDrive"},{"number","2187"}}, Person.class);

どんな助けでも感謝し
ます Thx
Saram

4

1 に答える 1

5

この場合、 DataBinderクラスを直接使用したいようです。バインドするオブジェクトのインスタンスを渡して DataBinder のインスタンスをインスタンス化し、bind(PropertyValues)メソッドを呼び出してバインディングを実行できるはずです。通常、Spring MVC はクラスの新しいインスタンスをインスタンス化しますが、DataBinder を直接呼び出す場合は、代わりにインスタンス化されたインスタンスを渡す必要があります。 ServletRequestDataBinderは舞台裏でMutablePropertyValuesのインスタンスを作成し、リクエストからのパラメーター値を入力してから、#bind(PropertyValues)方法。あなたの場合、新しいインスタンスを自分で作成し、リクエストからではなく直接データを入力することをお勧めします。既存のオブジェクトでデータを使用できる場合は、MutablePropertyValues のコンストラクターが多数あります。それ以外の場合は#add(String, Object)、名前と値を使用してメソッドを呼び出すだけです。

Person person = new Person();
DataBinder dataBinder = new DataBinder(person);
MutablePropertyValues mpv = new MutablePropertyValues();
mpv.add("name", "John Doe");
mpv.add("age", 25);
mpv.add("contact.street", "1st Street");
mpv.add("contact.number", 12345);
dataBinder.bind(mpv);
于 2013-01-10T04:57:53.737 に答える