Spring JSP - 一个返回404的视图

时间:2012-12-04 18:09:13

标签: spring model-view-controller jsp controller

我有一个带有RequestMapping方法的控制器类。此方法未呈现。我在控制台中没有看到任何错误。我确信我的请求正在使用一些打印语句正确映射。但视图不呈现也没有日志中的错误。我只是在浏览器中获得HTTP 404。在正确呈现其他视图时,不确定出现了什么问题。我已阅读以下问题SpringMVC giving 404 returning a view 但没有帮助。

这是请求映射方法。不确定有什么问题或者如何调试它?我所有的jsp文件都在一个目录中。我的Controller中也有一个公共默认构造函数。但我的控制器还有其他可能出错的地方,我还没有看到。如果您需要更多详细信息,请参阅更详细的代码链接。 https://github.com/C4G/V2V/blob/cbc4a8d9e904ab1f5bf47b9550a0879ccff33b01/src/controller/TestResultsController.java

  @RequestMapping(value = "/editTestResultFormGenerator", method = RequestMethod.GET)
  public ModelAndView editTestResultFormGenerator(HttpServletRequest request,
      Model model,
      @RequestParam(value="collectionNumber", required=false) Long collectionNumber,
      @RequestParam(value="collectionId", required=false) Long collectionId) {

    TestResultBackingForm form = new TestResultBackingForm();

    ModelAndView mv = new ModelAndView("editTestResultForm");
    Map<String, Object> m = model.asMap();
    m.put("refreshUrl", getUrl(request));
    m.put("existingTestResult", false);
    if (collectionId != null) {
      form.setId(collectionId);
      TestResult testResult = testResultRepository.findTestResultByCollectionId(collectionId);
      if (testResult != null) {
        form = new TestResultBackingForm(testResult);
        m.put("existingTestResult", true);
      }
      else {
        form = new TestResultBackingForm();
      }
    }

    addEditSelectorOptions(m);
    m.put("editTestResultForm", form);
    m.put("refreshUrl", getUrl(request));
    // to ensure custom field names are displayed in the form
    m.put("testResultFields", utilController.getFormFieldsForForm("TestResult"));
    System.out.println(m);
    mv.addObject("model", m);
    return mv;
  }

2 个答案:

答案 0 :(得分:1)

发现问题。使用Eclipse自动完成功能,我选择了错误的ModelAndView类。

我应该选择。

import org.springframework.web.servlet.ModelAndView;

而我选择了

import org.springframework.web.portlet.ModelAndView;

这解释了它。

答案 1 :(得分:0)

您需要在请求处理程序方法的末尾添加return mv;

^(显然是错的。不够清醒,嘿。)

讨论后编辑:对于特定的控制器,某些东西不是很正确,但它与方法的代码无关。在查看git存储库中的代码之后,我看不到任何明显的问题,因此建议进行大量的日志记录/调试以找出问题的确切位置。或者根本不使用该控制器。 :)