0

我可能会错过一些东西,因为我还没有完全理解一些基础知识。在我的控制器中,我有类似的东西

functiona(Person person){
System.out.println(p.firstName);
}

该视图具有以下内容

$.post("/validatePerson",{person: [{name:"first",value:"last"}]},function(result){
alert('done');
}

看起来好像信息正在传递,但未填充成员。我也尝试添加以下类型绑定器

@Global
public class PersonJsonObjectBinder implements TypeBinder<Person> {     
    @Override     
    public Person bind(String name, 
                        Annotation[] annotations, 
                        String value, Class actualClass, 
                        Type genericType) throws Exception 
                        {                               
                        return new Gson().fromJson(value, Person.class);
                        }
                    //return new JsonParser().parse(value) ;}
}

非常感谢您的帮助。

4

1 回答 1

0

如果要直接绑定到控制器参数,则需要将 Person 数据作为请求 uri 的一部分传入。

$.post("/validatePerson?person.firstname=john&person.lastname=doe",function(result){
alert('done');

}

查看参数 person.firstname 如何匹配参数名称 person 和属性。

为了从 Json 绑定,您可以将主体作为 json 元素获取并使用 GSON 构建器进行反序列化。类似于以下内容

JsonElement jsonElement = new JsonParser().parse(body);
Person person = new GsonBuilder().create().fromJson(jsonElement,Person.class)

再次,json 属性将需要匹配 Person 类的属性,例如

{person: [{firstname:"john",lastname:"doe"}]}
于 2012-10-09T15:25:39.067 回答