2017-11-09 2 views
0

Ich habe 2 BehandlermethodenSpring MVC RestController Mehrdeutige PathVariable Mapping

@RestController 
public class TestController { 

    ... 

    @GetMapping(name = "/test") 
    public Test testMethod() { 
     return testService.getTest(); 
    } 

    @GetMapping(name = "/test/{count}") 
    public List<Test> getTestList2(@PathVariable(name = "count") Integer count) { 

     return testService.getTestList(count); 
    } 
} 

GET Und ich bekomme Fehler:

Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'testController' method 
public java.util.List<models.Test> TestController.getTestList2(java.lang.Integer) 
to {[],methods=[GET]}: There is already 'testController' bean method 

Wenn ich eine Methode kommentieren alle gut funktionieren

Antwort

-1

Was Sie tun Fehler ist, dass Sie @GetMapping Namen eher sagen, dass es Wert ist, könnte es sich fühlen, dass beide von ihnen funktioniert der gleiche Weg, aber es hat winzige Unterschiede.

RequestMapping.name: Assign a name to this mapping.

und

RequestMapping.value: The primary mapping expressed by this annotation. Supported at the type level as well as at the method level! When used at the type level, all method-level mappings inherit this primary mapping, narrowing it for a specific handler method.

@RestController 
public class TestController { 

    @GetMapping(value = "/test") 
    public String testMethod() { 
       return "Hello from test"; 
    } 

    @GetMapping(value = "/test/{count}") 
    public String testMethod(@PathVariable(value = "count") Integer count) { 
       return "Hello from Parameterized Test. Count: " + count; 
     } 
} 

Daher spezifizieren Sie den Pfad oder Route des Controllers es immer vorzuziehen, die value

+0

http angeben: // localhost: 8080/Test? count = 3 nicht funktioniert – ip696

+0

@ ip696 Sie treffen nicht die richtige URL. Es sollte \t sein ** localhost: 8080/test/3 **. Irgendwie habe ich die Antwort umgeschrieben und mich selbst getestet. Lies es noch einmal und versuche es. Es sollte dein Problem beheben. –

+0

@ ip696 das ist absurd, keine Antwort zu haben. Du suchst Hilfe und Gemeinschaft will auch. Bitte rechek und wenn Sie es hilfreich finden, machen Sie es akzeptabel. –

Verwandte Themen