Spring 3 MVC Nesting RequestMapping - PullRequest
       226

Spring 3 MVC Nesting RequestMapping

5 голосов
/ 10 февраля 2010

Из официального документа Spring, Spring 3 MVC выглядит для поддержки вложенных запросов сопоставления. http://static.springsource.org/spring/docs/3.0.0.RELEASE/spring-framework-reference/pdf/spring-framework-reference.pdf На странице 448 они упомянули:

@Controller
@RequestMapping("/appointments")
public class AppointmentsController {
//...
    @RequestMapping(value="/new", method = RequestMethod.GET)
    public AppointmentForm getNewForm() {
        return new AppointmentForm();
    }
//...
}

(я убрал код для удобства чтения) В таком случае они утверждали, что запрос к /appoinments/new вызовет метод getNewForm. Однако он не работает с моим локальным сервером Google App Engine (хотя сервер GAE прекрасно работает с отображениями, которые не являются вложенными). Я создаю пример контроллера, как показано ниже:

@Controller
@RequestMapping("/basic.do")
public class HelloWorldController {
    @RequestMapping(value="/hello", method=RequestMethod.GET)
    public ModelAndView helloWorld() {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("basic/helloWorld");
        mav.addObject("message", "Hello World From Phuong!");
        return mav;
    }
}

но запрос к /basic.do/hello всегда приводит к ошибке 404.

Интересно, что там не так? Я использую режим на основе аннотаций с *.do запросом обработанным пружиной DispatchServlet.

1 Ответ

14 голосов
/ 10 февраля 2010

попробуйте

@Controller
@RequestMapping("/basic")
public class HelloWorldController {
    @RequestMapping(value="/hello.do", method=RequestMethod.GET)
    public ModelAndView helloWorld() {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("basic/helloWorld");
        mav.addObject("message", "Hello World From Phuong!");
        return mav;
    }
}

и попробуйте с basic/hello.do url

Причина в том, что /basic.do/hello не будет обрабатываться вашим сервлетом-диспетчером, так как это не URL, заканчивающийся на .do

Кстати, расширения .html лучше, чем .do, IMHO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...