2010-02-10 294 views
5

從Spring官方文檔看,Spring 3 MVC看起來是支持嵌套請求映射。 http://static.springsource.org/spring/docs/3.0.0.RELEASE/spring-framework-reference/pdf/spring-framework-reference.pdf 在448頁,他們提到:Spring 3 MVC嵌套請求映射

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

(I已經消除了可讀性一些代碼) 在這種情況下,他們聲稱到/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,請求由spring DispatchServlet處理。

回答

13

試試這個

@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是不會被你的分發程序Servlet來處理,因爲它不是在。做

結尾的網址

順便說一句,.html的擴展名比.do好,恕我直言

+0

你是個天才。非常感謝。 – 2010-02-10 14:06:12

+3

而你是一個誇張者:) – flybywire 2010-02-10 14:12:22

+9

沒有任何擴展比.html更好 – cdeszaq 2011-07-18 20:51:58