2012-03-26 2 views
0

REST 서비스 구현을 위해 Apache Wink를 사용 중이며 array 또는 List 유형의 매개 변수를 수신하지 못하는 것 같습니다. (하지만 제로 요소, null이 아닌) 서버 측에 @FormParam은 빈 목록/배열 (Apache Wink) 만 수신합니다.

$.post(url, 
    { param: ['string1', 'param2', 'x', 'etc...etc....etc'], 
     str2: "str2"}, 
    function(data) {// do something  
}); 

은 문자열과의 int가 제대로 수신하지만, 'PARAM'매개 변수는 항상 비어 수신 : 통화가 아약스 $의 .post에서 이루어지고 변수가 String [], List, Set ...으로 정의되는지 여부.

@POST @Produces("application/json") @Path("eee") 
public Response eee(@FormParam("str1") String str1, @FormParam("param") String[] param, @FormParam("str2") String str2) 

디버깅하는 동안, I는 같은 테이블 엔트리에 컨텍스트 변수를 볼 수있다 : 수신 기능으로 정의 PARAM '로 변환

wink.formParameters=[param%5B%5D=string1,param%5B%5D=param2,param%5B%5D=x,param%5B%5D=etc...etc....etc,str2=str2] 

[] = 문자열 1, PARAM [] = param2, .. ', 색인 생성 없음. 맞는지 모르겠다.

아이디어가 있으십니까?

답변

-1

으로 내가 받아들이는 변수를 정의 할 때이 나를 위해 작동합니다 : 당신은 또한 같은 클라이언트 호출을 조정할 필요가 있습니다

@FormParam("paramName") List<String> paramList; 

:이 오래된 질문 실현

$.post(url, 
    { paramName: "string1", 
    { paramName: "string2", 
    { paramName: "string3", 
     str2: "str2"}, 
    function(data) {// do something  
}); 
+0

몇 가지 구문 문제가 있습니다. 그러나 데이터 {x : "string1", x : "string2", x : "string3", str : "str"} 및 List 선언을 사용하면 목록은 하나의 요소 (마지막 요소) 만 가져옵니다. – user1292542

2

을하지만, 비슷한 문제가있어서 FormParam 이름 끝에 []를 추가하여 문제를 해결했습니다.

그래서 그 대신 @FormParam를 ("PARAM")를 가지는, 당신은 @FormParam ("PARAM []") 나는 또한 내 데이터를 직렬화 jQuery의 $ .params 방법을 사용하고

참고,하지만 난있을 것입니다 디버깅이 제대로 인코딩 된 양식 문자열을 표시 한 것처럼 보입니다. 따라서 필자는 이것이 단지 누락 된 것으로 의심합니다.

관련 문제