2016-12-19 13 views
0

мне нужно обрабатывать два значения @RequestMapping одним примером method.For /создать и создать/{идентификатор}Spring MVC множественным requestmapping, отсутствует 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; 
} 

Но это Безразлично работа, когда я бегу просто "создать" URL, без какого-либо параметра/

Он показывает мне следующую ошибку:

HTTP Status 500 - Отсутствует URI шаблон переменной 'ID' для Метод параметр типа Long

Тип отчета Статус

сообщение Missing URI шаблона переменной «идентификатор» для параметра метода типа Long

описание Сервер обнаружил внутреннюю ошибку, которая не позволяет ему выполнить эту просьбу.

+2

Возможный дубликат из [С Spring 3.0, могу ли я сделать необязательная переменная пути?] (http://stackoverflow.com/questions/4904092/with-spring-3-0-can-i-make-an-optional-path-variable) – Vladimir

ответ

1

К сожалению, вы не можете сделать это с помощью @PathVariable.

Вы должны сделать это, определив 2 отдельных методов обработки,

  1. One без переменной пути

    @RequestMapping(value = "create", method = RequestMethod.GET) 
    public String create_form(Model model, @ModelAttribute("channelNode") ChannelNode channelNode, 
        BindingResult result) { 
    
        return CHANNELNODE_ADD_VIEW; 
    } 
    
  2. One с переменной пути

    @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

Спасибо, дорогая, я уже знаю этот путь. Но я ищу обращение как с помощью одного метода:/Возможно, это невозможно Я не знаю:/ –

+1

Тогда вам нужно вместо этого использовать @RequestParam и отправить идентификатор в строку запроса – ScanQR