数据回显就是当用户数据提交失败时,自动填充好已经输入的数据,一般来说,如果是使用Ajax来做数据提交,基本上是没有数据回显这个需求的,但是如果通过表单做数据提交,那么数据回显就非常必要了。
<强>简单数据类型数据回显强>
简单数据类型,实际上框架在这里没有提供任何形式的支持,就是我们自己手动配置。加入提交的学生数据不符合要求,那么重新回到添加学生页面,并且预设之前已经填好的数据。
首先我们先来改造一下学生。jsp页面:
& lt;形式action="/addstudent”方法=皃ost”比; & lt; table> & lt; tr> & lt; td>学生编号:& lt;/td> & lt; td> & lt;输入类型=拔谋尽眓ame=" id " value=" https://www.yisu.com/zixun/$ {id} "祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td>学生姓名:& lt;/td> & lt; td> & lt;输入类型=拔谋尽钡拿?懊帧奔壑?" https://www.yisu.com/zixun/${名称}"祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td>学生邮箱:& lt;/td> & lt; td> & lt;输入类型=拔谋尽眓ame="电子邮件"价值=" https://www.yisu.com/zixun/$ {email} "祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td>学生年龄:& lt;/td> & lt; td> & lt;输入类型=拔谋尽钡拿?笆贝钡募壑?" https://www.yisu.com/zixun/${时代}"祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td colspan=?”在 & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交”比; & lt;/td> & lt;/tr> & lt;/table> & lt;/form>
在接收数据时,使用简单数据类型去接收:
@RequestMapping ("/addstudent”) 公共字符串addStudent2(整数id、字符串名称字符串邮件,整数年龄、模型模型){ 模型。addAttribute (“id”、身份证); 模型。addAttribute(“名字”,名称); 模型。addAttribute(“电子邮件”,电子邮件); 模型。addAttribute(“年龄”,年龄); 返回“学生”; }
这种方式,相当于框架没有做任何工作,就是我们手动做数据回显的。此时访问页面,服务端会再次定位到该页面,而且数据已经预填好。
<>强实体类数据回显强>
简单数据类型的回显,实际上非常麻烦,因为需要开发者在服务端一个一个手动设置。如果使用对象的话,就没有这么麻烦了,因为SpringMVC在页面跳转时,会自动将对象填充进返回的数据中。
& lt;形式action="/addstudent”方法=皃ost”比; & lt; table> & lt; tr> & lt; td>学生编号:& lt;/td> & lt; td> & lt;输入类型=拔谋尽眓ame=" id " value=" https://www.yisu.com/zixun/$ {student.id} "祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td>学生姓名:& lt;/td> & lt; td> & lt;输入类型=拔谋尽钡拿?懊帧奔壑?" https://www.yisu.com/zixun/$ {student.name} "祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td>学生邮箱:& lt;/td> & lt; td> & lt;输入类型=拔谋尽眓ame="电子邮件"价值=" https://www.yisu.com/zixun/$ {student.email} "祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td>学生年龄:& lt;/td> & lt; td> & lt;输入类型=拔谋尽钡拿?笆贝钡募壑?" https://www.yisu.com/zixun/$ {student.age} "祝辞& lt;/td> & lt;/tr> & lt; tr> & lt; td colspan=?”在 & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交”比; & lt;/td> & lt;/tr> & lt;/table> & lt;/form>
注意,在预填数据中,多了一个学生。前缀。这学生就是服务端接收数据的变量名,服务端的变量名和这里的学生要保持一直。服务端定义如下:
@RequestMapping ("/addstudent”) 公共字符串addStudent (@Validated (ValidationGroup2.class)学生学生,BindingResult结果){ 如果(结果!=null) {//校验未通过,获取所有的异常信息并展示出来 ListallErrors=result.getAllErrors (); (ObjectError allError: allErrors) { System.out.println (allError.getObjectName () +“:”+ allError.getDefaultMessage ()); } 返回“学生”; } 返回“你好”; }
注意,服务端什么都不用做,就说要返回的页面就行了,学生这个变量会被自动填充到返回
的模型
中。变量名就是填充时候的关键。如果想自定义这个键,可以在参数中写出来的模型,然后手动加入学生对象,就像简单数据类型回显那样。