我有一个带有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;
}
答案 0 :(得分:1)
发现问题。使用Eclipse自动完成功能,我选择了错误的ModelAndView类。
我应该选择。
import org.springframework.web.servlet.ModelAndView;
而我选择了
import org.springframework.web.portlet.ModelAndView;
这解释了它。
答案 1 :(得分:0)
您需要在请求处理程序方法的末尾添加return mv;
。
^(显然是错的。不够清醒,嘿。)
讨论后编辑:对于特定的控制器,某些东西不是很正确,但它与方法的代码无关。在查看git存储库中的代码之后,我看不到任何明显的问题,因此建议进行大量的日志记录/调试以找出问题的确切位置。或者根本不使用该控制器。 :)