Springmvc数据回显实现原理实例解析

  

数据回显就是当用户数据提交失败时,自动填充好已经输入的数据,一般来说,如果是使用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 ());   }   返回“学生”;   }   返回“你好”;   }      

注意,服务端什么都不用做,就说要返回的页面就行了,学生这个变量会被自动填充到返回
的模型   中。变量名就是填充时候的关键。如果想自定义这个键,可以在参数中写出来的模型,然后手动加入学生对象,就像简单数据类型回显那样。

Springmvc数据回显实现原理实例解析