【发布时间】:2016-08-26 18:19:24
【问题描述】:
我正在研究一个简单的应用程序,我在一个在线教程(gontu 系列)中学习了 Spring 注解。
我有一个名为 StudentAdmissionController 的控制器类,它处理来自 spring-dispatcher-servlet 的所有调用。注释如下。为了便于阅读,我只是展示了一个 sn-p。
@RequestMapping(value="/admissionForm.html", method=RequestMethod.GET)
public ModelAndView getAdmissionForm() {
ModelAndView model = new ModelAndView("admissionForm");
return model;
}
这将启动一个名为 admissionForm.jsp 的 JSP,它收集两个字段。这部分工作正常。我在 JSP 中的 <form> 标记如下所示。
<form action="/FirstSpringMVCProject/submitAdmissionForm.html" method="post">
我的控制器中有一个注释来处理这个看起来像这样的提交。
@RequestMapping(value="/submitAdmissionForm.html", method=RequestMethod.POST)
public ModelAndView submitAdmissionForm(@RequestParam("studentName") String name, @RequestParam("studentHobby") String hobby) {
ModelAndView model = new ModelAndView("admissionSuccess");
logger.info("Returning " + model.getViewName());
model.addObject("msg", "Details submitted by you:: Name: " + name + ", Hobby: " + hobby);
return model;
}
由于某种奇怪的原因,当它返回到调度程序 servlet 时,它试图显示一个名为 submitAdmissionForm.jsp 的页面(这是注释的名称)。
我不明白它为什么这样做。 GET 的注释工作正常,因为该注释恰好与视图 (admissionForm) 同名。我输入了一个记录器语句并在调试中,提供给模型的视图似乎是正确的视图(admissionSuccess),我想运行一个名为 admissionSuccess.jsp 的文件。但是 viewResolver 正在尝试运行一个名为 submitAdmissionForm.jsp 的文件(它不存在),而恰好是我所说的注释。这不是它应该如何工作的......
我一定是做错了什么...我在 Youtube 上关注的示例运行良好...所以我的 dispatcher-servlet 中的视图解析器发生了什么...请帮助。
我的调度器 servlet 如下所示。
<context:component-scan base-package="com.gontuseries.studentadmissioncontroller" />
<mvc:annotation-driven/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix">
<value>/WEB-INF/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
【问题讨论】:
-
能否分享您在 WEB-INF 中的 jsp 位置以及您的 web.xml 文件..?
标签: java jsp spring-mvc servlets