2012-03-26 5 views
0

Ich benutze Apache Wink für die Implementierung von REST-Diensten und ich kann nicht scheinen, Parameter des Typs Array oder Liste zu erhalten. Der Anruf wird von Ajax $ .post gemacht:@FormParam empfängt nur leere Liste/Array (Apache Wink)

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

Auf der Serverseite, Streicher und Ints korrekt empfangen werden, aber die ‚param‘ Parameter werden immer leer empfangen (nicht null, aber mit Null-Elementen), ob die Variable als String [], List, Set, ... definiert ist. Die Empfangsfunktion wird wie folgt definiert:

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

Während des Debuggens, kann ich eine Kontextvariable mit einem Tabelleneintrag sehen, wie:

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

, die auf ‚param übersetzt [] = Zeichenfolge1, param [] = param2, .. ', keine Indexierung. Ich weiß nicht, ob das stimmt.

Irgendwelche Ideen?

Antwort

-1

Dies funktioniert für mich, wenn ich die Annahme Variable definieren als:

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

Sie auch, wie die Client-Aufruf zwicken benötigen:

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

Einige Syntaxprobleme dort. Aber mit den Daten {x: "string1", x: "string2", x: "string3", str: "str"} und der Liste Deklaration erhält die Liste nur 1 Element (das letzte). – user1292542

2

Ich weiß, das eine alte Frage, aber Ich hatte ein ähnliches Problem, und am Ende habe ich es durch Hinzufügen von [] am Ende des FormParam-Namens behoben.

Statt @FormParam von ("param"), würden Sie haben @FormParam ("param []")

Bitte beachte, dass ich auch meine Daten jQuery $ .params Methode bin mit serialisiert, aber ich Es sieht so aus, als ob dein Debugging eine richtig codierte Form-Zeichenkette enthüllte, also vermute ich, dass nur die [] fehlen.

Verwandte Themen