第八章:springmvc中的form标签与数据回显
标签简介:
srpingmvc中的form标签只是restful风格的请求访问,使用这个form标签应该保证有数据的回显,也就是说,它一出来就要展示数据的。
1.导入标签库
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
2.form:form标签
①action属性
和HTML标签中的form标签的action属性作用一致,用来设置表单提交的URL地址。如果form:form标签省略action属性,那么会使用当前表单所在页面的URL地址作为action属性的值。
②modelAttribute属性
该标签无论是执行保存还是更新操作,都要从请求域中读取模型数据。如果没有设置modelAttribute属性那么就以command为属性名从请求域中读取。如果找不到则会抛出异常。
所以要想form:form标签正常工作一定要将一个模型对象保存到请求域中,哪怕是保存数据时也要创建一个空对象保存。
3.表单标签的共同属性
①path
表单字段,对应HTML元素的name属性,支持级联属性。
②htmlEscape
是否对表单值的HTML特殊字符进行转换,默认值为true。
③cssClass
表单组件对应的CSS样式类名。
④cssErrorClass
表单组件的数据存在错误时,采取的CSS样式。
4.form:radiobuttons
单选框组标签,用于构造多个单选框
①items
可以是一个List、String[]或Map
②itemValue
通过指定bean的一个属性名生成radio的value值。可以是集合中bean的一个属性值
③itemLabel
通过指定bean的一个属性名生成radio的label值
④delimiter
多个单选框可以通过delimiter指定分隔符

5.form:errors
显示表单组件或数据校验所对应的错误 <form:errors path=””/>:显示表单所有的错误 <form:errors path=”user”/>:显示所有以user为前缀的属性对应的错误 <form:errors path=”userName”/>:显示特定表单对象属性的错误
案例:
第一步:引入标签库:这里是再jsp中
<%@taglib uri="http://www.springframework.org/tags/form" prefix="fm"%>
第二步:创建一个对象(domain)和引用的对象类型
这里使用了lombok插件
同时注意:这里的性格在前端界面应该是一个单选选项,爱好是一个数组,宠物是一个对象类型的
用户(user)domain
1 @Data 2 public class User { 3 private String user_name; 4 private String user_age; 5 private Integer user_sex; 6 private String[] hobby;//爱好 7 private Pet pet; 8 }
宠物(pet)domain
1 @Data 2 public class Pet { 3 private Integer id; 4 private String name; 5 }
第三步:创建一个连接发送请求
1 <a href="${pageContext.request.contextPath}/testForm">springmvc表单测试</a>
第四步:创建一个controller接收并处理请求
1 @RequestMapping("/testForm") 2 public String test13(Model model){ 3 //存放爱好的集合 这里我们注意一下,创建一个爱好的集合,存放可选的全部爱好 4 ArrayList<String> hobbylist = new ArrayList<>(); 5 hobbylist.add("英雄联盟"); 6 hobbylist.add("王者荣耀"); 7 hobbylist.add("刀塔"); 8 9 //存放宠物的集合 这个集合存放的是前端界面中可选的全部宠物 10 ArrayList<Pet> pets = new ArrayList<>(); 11 Pet pet1 = new Pet(); 12 pet1.setId(1); 13 pet1.setName("老虎"); 14 Pet pet2 = new Pet(); 15 pet2.setId(2); 16 pet2.setName("狮子"); 17 Pet pet3 = new Pet(); 18 pet3.setId(3); 19 pet3.setName("猎豹"); 20 //将宠物添加到集合中 21 pets.add(pet1); 22 pets.add(pet2); 23 pets.add(pet3); 24 25 //创建对象并设置属性 26 User user = new User(); 27 user.setUser_name("蒲胤臻"); 28 user.setUser_age("23"); 29 String[] hobby = new String[]{"英雄联盟","王者荣耀"};//这里的爱好是用户本来就拥有的爱好 30 user.setHobby(hobby); 31 user.setPet(pet2);//这里是用户本来就拥有的宠物 32 user.setUser_sex(0);//这里设置用户的性别 33 34 //将上面设置好的数据全部存放到model中的request域中 35 model.addAttribute("hobbylist",hobbylist); 36 model.addAttribute("pets",pets); 37 model.addAttribute("command",user); 38 return "resoult.jsp"; 39 }
第五步:创建前端界面使用springmvc表单接收数据并回显数据
这里做一下解释:
- path:表示对象的那个属性
- label:表示要显示出来的信息
- items:表示他本来拥有的所有信息,然后你可以从这里面选择哪些,比如爱好,他就表示所有可选的爱好,就是我们提前设置的
- itemValue:表示选项的id值
- itemLabel:表示选项里展示出来的数据
1 <h3>表单展示</h3> 2 <fm:form action="/formdata" method="post"> 3 姓名:<fm:input path="user_name"/> <br> 4 年龄:<fm:input path="user_age"/> <br> 5 性别:<fm:radiobutton path="user_sex" value="1" label="男"/> 6 <fm:radiobutton path="user_sex" value="0" label="女"/> <br> 7 爱好:<fm:checkboxes path="hobby" items="${hobbylist}"/> <br> 8 宠物:<fm:select path="pet.id" items="${pets}" itemValue="id" itemLabel="name"/> <br> 9 <input type="submit" value="提交"> 10 </fm:form>
结果:我们把要回显的数据已经全部自动填充了


浙公网安备 33010602011771号