我在这里阅读了 spring data binder 的综合解释: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
};
我认识到 spring 将其表示为 html 表单,如下输入字段:
姓名、年龄、联系方式、街道、电话号码
我假设,它可以在取回它时将其放回 Person 对象。
我想“雇用”spring binder 为我提供的文本数据创建对象(不是 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);
感谢任何帮助
谢谢
萨拉姆
最佳答案
在这种情况下,听起来您想使用 DataBinder直接上课。您应该能够实例化 DataBinder 的实例,传递您要绑定(bind)的对象的实例,然后调用 bind(PropertyValues)方法进行绑定(bind)。 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);
关于java - 雇用 Spring MVC 数据绑定(bind)器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14233967/