0

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

这是请求映射方法。不知道出了什么问题或如何调试它?我所有的 jsp 文件都在一个目录中。我的控制器中还有一个公共默认构造函数。但是我的控制器可能还有其他问题,我还没有看到。如果您需要更多详细信息,这里是更详细代码的链接。 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;
  }
4

2 回答 2

1

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

我应该选择的。

import org.springframework.web.servlet.ModelAndView;

而我选择

import org.springframework.web.portlet.ModelAndView;

这就解释了。

于 2012-12-04T18:57:24.980 回答
0

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

^(显然错了。不够清醒,呵呵。)

讨论后编辑:该特定控制器不太正确,但与方法的代码无关。查看 git 存储库中的代码后,我看不到任何明显的东西,因此建议进行大量日志记录/调试以准确找出问题所在。或者干脆不使用那个控制器。:)

于 2012-12-04T18:12:08.697 回答