技术开发 频道

Spring MVC的表单控制器

通过错误标签显示错误

    当存在合法性检查错误时,请求被导向到formView的表单页面中。但是如果register.jsp表单页面没有做任何配合操作,校验错误的信息就象空气和电磁波一样,虽然存在但却看不到,如果我们在register.jsp中相应地添加一些Spring错误标签这面魔法镜,错误信息就现形了。下面我们对register.jsp视图文件进行调整,加入显示校验错误的标签:
代码清单 6 register.jsp:添加错误标签


<form:form>
用户名:<form:input path="userName" />
<font color="red"><form:errors path="userName" /></font>①userName的校验错误
<br>
密 码:<form:password path="password" />
<font color="red"><form:errors path="password" /></font>②password的校验错误
<br>
Email:<form:input path="email" />
<font color="red"><form:errors path="email" /></font> ③email的校验错误
<br>
<input type="submit" value="注册" />
<input type="reset" value="重置" />
</form:form>


    由于我们在构造错误时,使用了错误代码,错误代码是引用国际化资源的凭借。为了让错误代码生效,我们就必须提供相应的国际化资源。假设我们将错误资源放在基名为errors的国际化资源文件中,提供诸如errors.properties和errors_zh_CN.properties的国际化资源文件,那么错误信息就可以做到国际化了。以下是errors.properties资源文件的内容(绿色部分为错误代码):

required.username=user name can't be empty.
required.password=password can't be empty.
required.email=email can't be empty.
invalid.email=email is valid.
exists.userName=user name already existed.

    将诸如errors.properties和errors_zh_CN.properties的整套资源文件都放到类路径下后,还需要在上下文中引用这些国际化资源。因为国际化资源信息仅需要在Web展现层使用,所以直接在DispatcherServlet上下文对应的baobaotao-servlet.xml配置文件中声明就可以了:

代码清单 7 baobaotao-servlet.xml
<bean id="messageSource" ① 注意一定要使用“messageSource”这个Bean名称
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>errors</value> ② 指定资源文件基名称
</list>
</property>
</bean>


    通过以上的配置后,故意填写一个错误的注册信息,在提交表单后你将看到如下形如以下的错误提示页面:



                                  图 3 表单数据不合法的错误信息

小结 

    虽然Spring MVC允许你使用不同类型的处理器,但绝大多数情况下我们使用控制器(Controller)处理请求。Spring MVC为不同需求提供了多种类型的控制器,控制器一般拥有一个特定用途的工作流程,如表单控制器编制了表单处理通用工作流程,你仅需要实现SimpleFormController特定方法,并配置使用Spring表单标签就可以轻松完成表单功能的开发了。
0
相关文章