Spring mvc - одна страница с несколькими формами - PullRequest
2 голосов
/ 19 января 2012

Я новичок в 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. Я думаю, что это не может быть сделано так, как я делаю до сих пор, так что вы можете дать мне, пожалуйста, какой-нибудь простой и понятный учебник для решения нескольких форм на одной странице? Я бы предпочел не аннотации, потому что я еще не ясно, аннотации. Спасибо за советы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...