2010-12-10 107 views
0

當我這樣做。問題在Spring中啓用控制器頁面渲染jsp

@RequestMapping("/folder/{name}.jsp") 
public ModelAndView catchAll(@PathVariable String viewName) { 
    return new ModelAndView("legacy/" + viewName); 
} 

它給一個錯誤的瀏覽器

遺產/ 123.jsp不可

我怎樣才能解決這個問題

,如果我有一個列表的ID,

我希望瀏覽器顯示像這樣/遺產/ 1 /遺產/ 2等等,所以爲什麼我可以在春季編程

+0

想想你要回去的上下文根。該資源的完整路徑是什麼? – 2010-12-10 10:40:29

回答

0

你告訴Spring呈現一個不存在的jsp頁面。如果您的jsp的名稱是「legacy.jsp」,那麼這是您呈現的視圖,並且您只是將不同的對象傳遞給基於該參數的視圖。如果你想legacy/123帶你到「legacy.jsp」,這將顯示出傳統與對象123的ID,那你就去做這樣的:

@RequestMapping("/legacy/{id}") 
public ModelAndView catchAll(@PathVariable("id") String id) { 
    Legacy legacy = // Get the object from your database using the id 
    return new ModelAndView("legacy", "legacy", legacy); // insert the legacy object into your view, it will be accessed by the name "legacy" 
} 

所以這種方式,您輸入的URL「/遺產/ 123「(或單擊其鏈接),它只會使用編號爲123的對象提取legacy.jsp

2

你需要把一個123.jsp放在你放置JSP的目錄的legacy子目錄中。

但我想這不是你想要的:我想你想建立一些轉發。在這種情況下,你必須返回一個重定向視圖。

@RequestMapping("/folder/{name}.jsp") 
public ModelAndView catchAll(@PathVariable String viewName) { 
    return new ModelAndView(new RedirectView("legacy/" + viewName + ".jsp")); 
} 
+0

是啊意味着如果我有一個清單,所以按照ID遺傳/ {id}調整 – aditya 2010-12-10 10:46:22

+0

抱歉,我不明白你的意見?這是一個問題,您的問題的更多細節,或確認它的工作原理? – Ralph 2010-12-10 10:59:13

+0

有1個jsp頁面說view.jsp,所以通過spring將其渲染爲view.htm,好吧,這很好,但現在我想傳遞一個列表給它,並根據列表中給定的id,視圖.htm是view.htm/{id}的改變,但如果我有100個數據,那麼我是否需要100個jsp頁面?我如何通過彈簧來解決這個問題 – aditya 2010-12-10 11:07:17