【发布时间】:2012-01-07 22:20:19
【问题描述】:
我正在使用 spring mvc 3.0.6。这是我的代码:
@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:30,648 INFO [stdout] DEBUG [org.springframework.web.servlet.view.JstlView] - 转发到 InternalResourceView 'staff 中的资源 [WEB-INF/views/staff/newStaff.jsp] /newStaff'
20:16:30,648 INFO [stdout] 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);
}
}
在此之后,我发送新请求(只有一级 url):http://localhost:8080/mvc/newStaff.do。工作正常!!!! 有什么解决办法还是我弄错了什么?
我正在使用 jbossAS 7.0
【问题讨论】:
-
您是否尝试过 (a) 将视图更深一层,在 /staff/staff/newStaff.jsp 中,或者 (b) 使用 JSP 的绝对路径?
-
感谢 Dave..你给我展示了一个测试的好主意..是的,当我使用 JSP 的绝对路径时,它可以工作..我返回检查我的 InternalResourceViewResolver 配置,前缀 = WEB-INF /views/,结合 cfontes 的建议,我改为前缀 = /WEB-INF/views/...工作正常。谢谢..
-
没问题 :) 如果答案不起作用,顺便说一句,它不会被接受——它会让未来的访问者感到困惑。我不清楚你的意思是它有效还是无效。
标签: java spring-mvc