<form:form action="register/student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>
Когда я изначально представляю эту форму, URL-адрес
"loclhost: 8080/SpringSchool /register/
student.htm"
Если подача не удалась, и я отправлю ее снова, новый URL-адрес добавляется и становится:
"loclhost: 8080/SpringSchool /register/register/
student.htm"
В результате я получаю ошибку 404. Как я могу сбросить URL-адрес, чтобы URL-адрес не был добавлен или просто в основном выполнял эту работу?
@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);
}
view resolver
<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>
Если вы начинаете URL-адрес из '/', то он указывает корень контекста, но если вы начинаете URL-адрес из слова - это означает "из текущего пути". Ваша проблема должна быть решена, если вы добавите '/' в URL-адрес:
<form:form action="/${pageContext.request.contextPath}/register/student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>
Это связано с тем, что ваше действие формы использует относительный путь. Чтобы устранить проблему, вы должны организовать свой jsp в папке, и ваш контроллер должен возвращать представления с соответствующими путями.
Переместите jsp на:
/WEB-INF/jsp/register/registerStudent.jsp
Контроллер должен вернуть имя вида:
register/registerStudent
В вашей форме измените действие на:
<form:form action="student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>