<form:form action="register/student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>
当我最初提交此表单时,网址为
“loclhost:8080 / SpringSchool /register/
student.htm”
如果提交失败并再次提交,则会追加新网址并变为:
“loclhost:8080 / SpringSchool /register/register/
student.htm”
结果我收到404错误。如何重置网址,以便不附加网址或基本上使其工作?
@Controller
@RequestMapping("/register")
public class RegisterController {
@RequestMapping(method=RequestMethod.GET)
public ModelAndView registerPage(){
return new ModelAndView("registerStudent", "registerForm", new Student());
}
@RequestMapping(value="/student", method = RequestMethod.POST)
public ModelAndView registerStudent(@ModelAttribute("registerForm") final Student student, RedirectAttributes redirectAttr){
....
return new ModelAndView("registerStudent", "registerForm", student);
}
查看解析器
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
答案 0 :(得分:1)
如果从'/'开始URL,则表示上下文的根,但如果从word开始URL,则表示'来自当前路径'。如果您在网址中添加“/”,则应解决您的问题:
<form:form action="/${pageContext.request.contextPath}/register/student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>
答案 1 :(得分:1)
这是因为您的表单操作正在使用相对路径。要解决您的问题,您应该将jsp组织到一个文件夹中,控制器应该返回带有相应路径的视图。
将你的jsp移动到:
/WEB-INF/jsp/register/registerStudent.jsp
您的控制器应返回视图名称:
register/registerStudent
在您的表单中,将操作更改为:
<form:form action="student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>