2011-11-28 91 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 { 
...