标签简介:

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指定分隔符

表格数据回显jquery form表单数据回显_表格数据回显jquery


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>

结果:我们把要回显的数据已经全部自动填充了