【问题标题】:spring mvc 3.0.6 @RequestMapping for two level url got 404二级url的spring mvc 3.0.6 @RequestMapping得到404
【发布时间】: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


【解决方案1】:

我会在人员前面添加一个 / 来获取应用程序上下文根

试试这个:

@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";            
    }
}

【讨论】:

  • 感谢cfontes的回复..我修改了你写的代码,这里还是一样的问题...-_-!
【解决方案2】:

克里斯蒂亚诺的回答几乎是正确的。唯一留下的就是**之前的另一个小节:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多