2011-11-28 93 views
1

我使用spring mvc 3.0.6。這裏是我的代碼:spring mvc 3.0.6 @RequestMapping爲兩級url得到了404

@Controller 
@RequestMapping(value="/staff") 
public class StaffController extends BaseController { 

    @RequestMapping(method=RequestMethod.GET) 
    public ModelAndView goStaffIndex(Model model) throws Exception{ 
     model.addAttribute("staff", new Staff()); 
     return new ModelAndView("staff/staffIndex","model",model); 
    } 

    @RequestMapping(value="/newStaff",method=RequestMethod.GET) 
    public String addStaff(Model model) throws Exception{ 
     model.addAttribute("staff", new Staff()); 
     return "staff/newStaff"; 
     //return new ModelAndView("staff/newStaff","model",model); 
    } 
} 
  • 第一種方法做工精細。

  • 問題在第二種方法,當我發送請求:http:// localhost:8080/mvc/staff/newStaff.do。調度員發送請求到addStaff()方法,這也很好。回報也很好。因爲調試消息告訴我很好。

消息:

  • 20:16:30648 INFO [標準輸出] DEBUG [org.springframework.web.servlet.view.JstlView] -Forwarding資源[WEB-INF /視圖/人員/ newStaff.jsp]在InternalResourceView '人員/ NEWSTAFF'

  • 20:16:30648 INFO [標準輸出] DEBUG [org.springframework.web.servlet.DispatcherServlet] - 成功完成請求

但是,頁面出現了404錯誤。但調試控制檯沒有任何錯誤或警告。

當我刪除類@RequestMapping和改變一些代碼,如:

public class StaffController extends BaseController { 

    @RequestMapping(value="/staff",method=RequestMethod.GET) 
    public ModelAndView goStaffIndex(Model model) throws Exception{ 
     model.addAttribute("staff", new Staff()); 
     return new ModelAndView("staff/staffIndex","model",model); 
    } 

    @RequestMapping(value="/newStaff",method=RequestMethod.GET) 
    public String addStaff(Model model) throws Exception{ 
     model.addAttribute("staff", new Staff()); 
     return "staff/newStaff"; 
     //return new ModelAndView("staff/newStaff","model",model); 
    } 
} 

在此之後,我發送新的請求(僅具有一個水平網址):HTTP://本地主機:8080/MVC /newStaff.do。工作正常! 任何決議或我誤會了什麼?

我使用jbossAS 7.0

+0

你嘗試是(a)把視圖更深一層,在/staff/staff/newStaff.jsp,或(b)使用JSP的絕對路徑? –

+0

謝謝戴夫..你告訴我一個好主意test..yes,當我使用絕對路徑到JSP,它的工作..我回來檢查我的InternalResourceViewResolver配置,前綴= WEB-INF/views /,結合建議cfontes我改變了前綴= /WEB-INF/views/...working fine.thanks .. – cameldeng

+0

沒問題:)如果答案不起作用,順便說一句,它不會被接受 - 它會混淆未來的訪客。我不清楚你是否意味着它的工作或它沒有。 –

回答

0

我想補充一個/在工作人員面前得到了應用程序上下文根

試試這個:

@Controller 
@RequestMapping(value="/staff**") 
public class StaffController extends BaseController { 

    @RequestMapping(method=RequestMethod.GET) 
    public ModelAndView goStaffIndex(Model model) throws Exception{ 
     model.addAttribute("staff", new Staff()); 
     return new ModelAndView("staff/staffIndex","model",model); 
    } 

    @RequestMapping(value="/staff/newStaff**",method=RequestMethod.GET) 
    public String addStaff(Model model) throws Exception{ 
     model.addAttribute("staff", new Staff()); 
     return "/staff/newStaff";    
    } 
} 
+0

感謝cfontes的回覆..我修改你編寫的代碼,這裏仍然有同樣的問題......-_-! – cameldeng

+0

現在有效嗎? –

0

從克里斯蒂亞諾的答案几乎是正確的。這是留下的唯一的事情就是之前另一吧**:

@Controller 
@RequestMapping(value="/staff/**") 
public class StaffController extends BaseController { 
...