之前已经实现了spring mvc的入门例子及如何处理带参数的请求Controller编写。本文主要记录:
1)重定向请求
2)处理路径中含有变量的请求
3)使用JSR-303进行校验
① 首先,编写一个方法实现一个表单的展现:
注意到,params="new",这意味着该方法处理的请求Url:xxx/home?new
(home是定义Controller的请求路径)
这是跳转的页面定义(使用了velocity模板):
② 然后,在页面上填入值,点击提交,如果不指定form的提交路径,则默认是xx/home(Controller的请求路径),此时需要编写处理表单的输入方法:
a.在输入参数中,对User使用了@Valid,表示在user传入之前会进行校验,这是使用了JSR-303的校验规则,如何定义校验规则呢?在后面④-->>
b.在方法处理上,
如果校验失败,则会将BindingResult传入到方法中,通过br.hasErrors进行判断是否校验成功,如果失败,将br放在model中,以便在edit.vm页面中显示,这就是在页面edit.vm中,有<span>$!br.getFieldError("userName").getDefaultMessage()</span>(页面只写了这一处)
c.通过重定向到请求:/home/user.getUserName.路径中含有变量,因此需要定义处理请求路径变量的方法。
③ 定义处理请求路径变量的方法
在@RequestMapping中,value使用了占位符{username},在参数String
username使用了@PathVariable,表示的是路径的变量,说明该方法处理的请求为:xx/home/somebodyName,如请求的url为xxx/home/hahaha,则方法中的username为hahaha
④ 使用JSR-303进行校验
之前使用了@Valid User
user,校验的是user对象,因此需要对User进行编写校验规则。使用的是JSR-303,在使用前,需要引入相关的jar包,如果是maven工程,需要定义maven坐标:
OK,看下User的校验规则
运行工程,记录下效果:
1、请求展示表单的路径,输入过长的Username后提交:
spring mvc表单的展现、输入处理、校验的实现,布布扣,bubuko.com
原文:http://www.cnblogs.com/wmmang-blog/p/3705138.html