Сбросить весенний URL. URL добавляется после отправки формы дважды

1
<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>
  • 0
    почему первоначальная отправка формы не удалась?
  • 0
    когда не удается подтвердить, вы должны просто переслать запрос обратно
Показать ещё 9 комментариев
Теги:
spring
spring-mvc
forms
url

2 ответа

1
Лучший ответ

Если вы начинаете URL-адрес из '/', то он указывает корень контекста, но если вы начинаете URL-адрес из слова - это означает "из текущего пути". Ваша проблема должна быть решена, если вы добавите '/' в URL-адрес:

<form:form action="/${pageContext.request.contextPath}/register/student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>
  • 0
    Я попробовал это, и это не работает. сбрасывает URL-адрес на localhost: 8080 / register / student.htm. Это избавляет от "SpringSchool" от URL после отправки
  • 0
    Вы можете легко добавить его: <form: form action = "/ $ {pageContext.request.contextPath} /register/student.htm" ...
Показать ещё 1 комментарий
1

Это связано с тем, что ваше действие формы использует относительный путь. Чтобы устранить проблему, вы должны организовать свой jsp в папке, и ваш контроллер должен возвращать представления с соответствующими путями.

Переместите jsp на:

/WEB-INF/jsp/register/registerStudent.jsp

Контроллер должен вернуть имя вида:

register/registerStudent

В вашей форме измените действие на:

<form:form action="student.htm" method="post" modelAttribute="registerForm">
.....
</form:form>
  • 0
    Я не буду работать, потому что в первую очередь будет использоваться следующий URL: loclhost: 8080 / SpringSchool / student.htm, который не является действительным URL
  • 0
    Действие формы относится к пути, а не к контексту. В моем посте путь был бы localhost: 8080 / SpringSchool / register
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню