2016-12-19 3 views
0

Ich brauche zwei @RequestMapping Werte zu handhaben durch ein method.For Beispiel /erstellen und erstellen/{id}Spring MVC mehrere requestmapping, fehlt requestparam

@RequestMapping(value = {"create","create/{id}"}, method = RequestMethod.GET) 
public String create_form(@PathVariable(value = "id") Long id,Model model, @ModelAttribute("channelNode") ChannelNode channelNode, 
     BindingResult result) { 

     if(id>0){ //or if id exsist 

     //do something 

     } 

    return CHANNELNODE_ADD_VIEW; 
} 

Aber es doesn Arbeit, wenn ich einfach laufen "create" url ohne param/

Es zeigt mir, folgende Fehler:

HTTP-Status 500 - Fehlende URI Template-Variable 'id' für Methodenparameter vom Typ Langer

Typ Statusbericht

Nachricht fehlt URI Template-Variable ‚id‘ für Methodenparameter vom Typ Langen

Beschreibung Der Server hat einen internen Fehler festgestellt, dass es von dieser Anforderung verhindert.

+2

Mögliche doppelte von [Mit Frühling 3.0, kann ich ein machen optionale Pfadvariable?] (http://stackoverflow.com/questions/4904092/with-spring-3-0-cani-i-ake-an-optional-path-variable) – Vladimir

Antwort

1

Leider gibt es keine Möglichkeit, dies mit @PathVariable zu tun.

Sie müssen es tun, indem 2 separate Behandlungsmethoden zu definieren,

  1. One ohne Pfadvariablen

    @RequestMapping(value = "create", method = RequestMethod.GET) 
    public String create_form(Model model, @ModelAttribute("channelNode") ChannelNode channelNode, 
        BindingResult result) { 
    
        return CHANNELNODE_ADD_VIEW; 
    } 
    
  2. One mit Pfadvariablen

    @RequestMapping(value = "create/{id}", method = RequestMethod.GET) 
    public String create_form(@PathVariable(value = "id") Long id,Model model, @ModelAttribute("channelNode") ChannelNode channelNode, 
        BindingResult result) { 
    
        return CHANNELNODE_ADD_VIEW; 
    } 
    
+0

Danke lieber, ich kenne diesen Weg schon. Aber ich suche beide nach einer Methode:/Vielleicht ist es nicht möglich, ich weiß nicht:/ –

+1

Dann müssen Sie stattdessen @RequestParam verwenden und die ID in der Abfragezeichenfolge senden – ScanQR

Verwandte Themen