我是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>
映射
<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设置为home值时,它会在某些奇怪的长度中出错错误信息。因此,当验证器出现错误时,我想让用户保持在主页上并在那里显示来自验证器的消息,而不是重定向到loginForm.htm。我认为到目前为止我不能按照我这样做的方式完成,所以你能不能给我一个简单明了的理解教程,在一页解决问题的多种形式?我会使用非注释方式,因为我还不清楚注释。 谢谢你的建议。