2012-09-18 2 views
2

요청 매개 변수로 POJO를의 배열을 바인딩 : JSON에 연재되는 복잡한 객체내가 형태로 요청을 보내려고

애플 반면
list=Apple1&list=Apple2&list=Apple3 

입니다 : 내가

{"param1":"value1", "param2":"value2"} 

정의

request(@RequestParam("list") POJO[] pojos){ 
//handle request 
} 

그것은 하나의 POJO를 보낼 아무 문제가 없다 : 봄 디스패처 서블릿과 같은 방법으로, 이러한 요청을받을 수

java.lang.NoSuchMethodException: [Lmy.package.Apple;.<init>() 

가 어떻게 올바르게 배열을 직렬화하는 디스패처 서블릿을 가르 칠 수 : 최대한 빨리 배열의 봄 전송하려고

request(@RequestParam("single") POJO pojos){ 
//handle request 
} 

하지만 같은 같은 방법으로 같은 예외로 죽어 가고있다? 당신이

+0

'@ RequestBody'를 사용하고 요청 본문을 json – Kevin

+0

으로 전달하십시오. 다음 매개 변수가 하나 이상인 메소드를 사용하고 있기 때문에이 기능이 작동하지 않습니다. request (@RequestParam POJO [] newArray, @ RequestParam POJO [] oldArray)이 가능해야합니다. – joecks

답변

2

Dispatcher 서블릿 자체가 아니라 Dispatcher 서블릿 구현 인터페이스에 @RequestParam 주석을 추가 할 때이 오류가 발생했습니다. 이 경우 Spring은 주석을 무시하고 사과 배열을 직접 인스턴스화하려고합니다. 사용자가 제공 한 오류 메시지의 결과는 java.lang.NoSuchMethodException: [Lmy.package.Apple;.<init>()입니다.

+0

놀랍습니다. 비슷한 설정이 있습니다. Spring에서 실제로 아무런 문제가없는 RequestParam Annotation을 정의한 인터페이스이지만 Spring을 unmarshalling 할 때 어떤 식 으로든이 오류가 발생하고 구현에서 주석을 추가로 제공해야합니다. – joecks

1

앱이 기대 후드 수단을 얻을 예외를 도움을 감사 Apple 인수 없음의 생성자가없고 (Oracle's Troubleshooting page 후)를 찾아 실패합니다 :

는, IllegalArgumentException가 제로 때문에 발생합니다 인수 이 요청되었고 인수를 전달하려고 시도했습니다. 생성자에 잘못된 유형의 인수가 전달 된 경우에도 동일한 예외가 throw됩니다. ... 아무 의미 할 수

$ java ConstructorTroubleAgain int 
java.lang.NoSuchMethodException: ConstructorTroubleAgain.<init>(int) 
     at java.lang.Class.getConstructor0(Class.java:2706) 
     at java.lang.Class.getConstructor(Class.java:1657) 
     at ConstructorTroubleAgain.main(ConstructorTroubleAgain.java:26) 

. 잭슨이 JSON 문자열에서 애플로 deserialize 할 수 있습니까? Apple 객체는 어떻게 생성됩니까? Apple1이 올바르게 이스케이프 된 문자열입니까? 나는 봄이 잘 배열을 처리하지 않았다 발견 마지막으로 그들이 [] 부분이없는 경우에 있기 때문에 당신은

list[]=Apple1&list[]=Apple2&list[]=Apple3 

request(@RequestParam("list[]") Apple[] apples) 

으로 시도 할 수 있습니다.

+0

unfortunatly list []이 (가) 작동하지 않았습니다! : – joecks

+0

'Apple' 클래스에는 모든 필드에 대해 인수가없는 생성자와 설정자가 있습니까? – Xaerxess

+0

그래, 언급하는 것을 잊어 버렸지 만 문제가 될 수 있음을 아는 덕분에 – joecks

관련 문제