Я новичок в Spring и столкнулся с одной проблемой довольно долго. Я пытаюсь гуглить вокруг, но я не нашел никакого легкого для понимания руководства, как решить это.
Моя проблема в том, что мне нужна страница, назовем ее домашней страницей, на которой будет несколько форм.
Затем мне нужно перейти к каждой форме на конкретном контроллере, и из контроллера вернуться снова домой. Я решаю это с помощью SimpleUrlHandlerMapping. Например, когда я хотел иметь loginForm на домашней странице, я сделал это следующим образом:
- создать представление loginForm.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<fieldset>
<legend>Login</legend>
<form:form method="post" action="loginForm.htm">
Mail:<form:input path="mail"/> </br>
Password:<form:password path="password" /> </br>
<input type="Submit" value="Logni!" />
</form:form>
</fieldset>
- создать контроллер для loginForm.jsp ... просто классический SimpleFormController, возвращающийся домой, в случае успеха
отображение
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/home.htm">homeCtrl</prop>
<prop key="/loginForm.htm">loginFormCtrl</prop>
<prop key="/loginSuccess.htm">loginSuccessCtrl</prop>
<prop key="/registerForm.htm">registerFormCtrl</prop>
<prop key="/registerSuccess.htm">registerSuccessCtrl</prop>
</props>
</property>
</bean>
<bean id="loginFormCtrl" class="web.LoginFormController" >
<property name="sessionForm" value="false"/>
<property name="commandClass" value="user.User"/>
<property name="formView" value ="loginForm" />
<property name="validator" ref="loginValidator"/>
<property name="successView" value="loginSuccess.htm" />
<property name="user" ref ="user" />
<property name="userDAO" ref="userDAO" />
</bean>
<bean id="loginSuccessCtrl" class="web.LoginSuccessController"/>
включить страницу формы на домашней странице
мой home.jsp выглядит примерно так
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<h1>Translator</h1>
<h3> Welcome user <c:out value="${model.mail}"/> it's <c:out value="${model.time}" /></h3>
<jsp:include page="/loginForm.htm" />
<jsp:include page="/registerForm.htm" />
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда возникает ошибка в валидаторе (например, неверный пароль или имя пользователя), он перенаправляет мою страницу к значению formView - loginForm, когда я пытаюсь установить formView в домашнее значение, а затем false в какой-то странной длинной сообщение об ошибке. Поэтому, когда возникает ошибка в валидаторе, я бы хотел оставить пользователя на домашней странице и показать там сообщение от валидатора, а не перенаправлять на loginForm.htm. Я думаю, что это не может быть сделано так, как я делаю до сих пор, так что вы можете дать мне, пожалуйста, какой-нибудь простой и понятный учебник для решения нескольких форм на одной странице? Я бы предпочел не аннотации, потому что я еще не ясно, аннотации.
Спасибо за советы.