2012-06-02 2 views
0

몇 가지 기본 사항을 완전히 이해하지 못했기 때문에 무언가를 놓칠 수 있습니다. 내 컨트롤러에서 나는프레임 워크 1.2.5 재생 - 컨트롤러에 Person 객체 게시 시도 중

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

당신의 도움이 크게 appriciated됩니다 다음 typebinder을 추가 노력했다.

+0

당신은 사람이 배열이 확실한가요? 그것은 내가 생각하는 대상이어야합니다 :'{person : {name : "first", value : "last"}}' –

답변

0

컨트롤러 인수에 직접 바인딩하려면 요청 uri의 일부로 Person 데이터를 전달해야합니다.

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

은} 매개 변수 Person.firstName에이 인수 이름 사람과 속성과 일치하는 방법을 참조하십시오.

Json에서 바인드하려면 json 요소로 본문을 가져온 다음 GSON 작성기를 사용하여 deserialise 할 수 있습니다. 다음

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

같은 뭔가가 다시 json으로 인한 인적이 일치해야 Person 클래스의 속성 예컨대

{person: [{firstname:"john",lastname:"doe"}]}