2016-07-19 10 views
0

Ist es möglich, die Parameter, die in einem GET Webservice im Frühjahr verwendet werden, umzubenennen? Wie search.limitResults im folgenden Beispiel:Wie benennt man Eigenschaften von compex @RequestParams in @RestController?

localhost:8080/firstname=test&search.limitResults=10

Sie erhalten die Idee. Kann das erreicht werden?

@RestController 
public class MyServlet { 
    @RequestMapping(value = "/", method = RequestMethod.GET) 
    private String test(RestParams p) { 

    } 
} 

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class RestParams { 
    private String firstname; 
    private String lastname; 

    //is that possible to nest? 
    @XmlElement(name = "search") 
    private MyComplexSearch search; 
    public MyComplexSearch getSearch() {return search;} 
    public void setSearch(MyComplexSearch) {this.search = search;} 

    @XmlRootElement(name = "search") 
    @XmlAccessorType(XmlAccessType.FIELD) 
    public class MyComplexSearch { 
     private int limitResults; 
     //some more 
    } 
} 

Die Anfrage funktioniert nicht mit dem obigen Code. Stattdessen müsste man myComplexSearch als Objektnamen verwenden.

localhost:8080/firstname=test&myComplexSearch.limitResults=10

Wie kann ich den Namen der Eingabeeigenschaft neu zu definieren, ohne selbst die Java-Klasse umbenennen zu müssen?

+0

Wenn Sie ein 'bekommen/setSearch' es wird funktionieren. –

+0

Ich habe sie tatsächlich so benannt (siehe oben), aber immer noch das gleiche Problem. – membersound

+0

Wenn die Methode in der Tat ist, wie Sie gezeigt haben, sollte es einfach funktionieren. Wenn nicht, verwenden Sie nicht die hier dargestellte Methode oder haben eine Fehlkonfiguration ... –

Antwort

0

Verschachtelte Klassen müssen statisch sein.

public static class MyComplexSearch