第七节 认识SpringMVC中的表单标签
|
|
所谓成熟,就是: --胖先生 |
SpringMVC的表单标签
回顾: JSTL标签 --C标签 FMT标签
自学:JSP如何自定义标签[开源社区当中有别人写好的标签]
表单标签:使用规则
模拟开发环境:
1.更新操作
A.通过主键进行查询
B.JSP显示
C.提交表单
|
@RequestMapping(value="/update/{user_id}",method=RequestMethod.GET) public ModelAndView toUpdatePage(@PathVariable Integer user_id){ ModelAndView mav = new ModelAndView(); User user = new User();//模拟--->>>>>从数据库查询出来 user.setUser_id(user_id); user.setAccount("wukong"); user.setUser_name("悟空"); user.setPassword("123456");//使用form标签无法显示密码 user.setPhoto("1.jpg"); //传递数据 mav.addObject("user", user); //传递到那个页面 mav.setViewName("jsp/update"); return mav; } |
|
<h2>传统方式</h2> <form action="update" method="post" > 账号:<input type="text" name="account" value="${user.account }"><br/> 密码:<input type="text" name="password" value="${user.password }"><br/> 姓名:<input type="text" name="user_name" value="${user.user_name }"><br/> <input type="submit" value="用户更新[传统方式]"> <!-- 隐藏域 --> <input type="hidden" name="_method" value="put"> <input type="hidden" name="user_id" value="${user.user_id }"> </form> |
|
注:如果使用传统方式,注意一般都是使用EL表达式来完成操作 |
|
<h2>SpringMVC表单标签方式</h2> <form:form action="update" method="put" commandName="user"> 账号:<form:input path="account"/><br/> 密码:<form:input path="password"/><br/> 姓名:<form:input path="user_name"/><br/> <input type="submit" value="用户更新[标签方式]"> <!-- 隐藏域 --> <form:hidden path="user_id"/> </form:form> |
|
注: commandName和modelAttribute必须对应的是一个持久化类或者传输对象,path属性对应的是必须是类中的属性,并且要知道可以使用普通的HTML标签 |
|
<h2>混合模式-看密码的写法</h2> <form:form action="update" method="put" modelAttribute="user"> 账号:<form:input path="account"/><br/> 密码:<input type="password" name="password" value="${user.password }"><br/> 姓名:<form:input path="user_name"/><br/> <input type="submit" value="用户更新[标签方式]"> <!-- 隐藏域 --> <form:hidden path="user_id"/> </form:form> |
(1) 测试单选按钮和下拉列表
|
@RequestMapping(value="/update/{user_id}",method=RequestMethod.GET) public ModelAndView toUpdatePage(@PathVariable Integer user_id){ ModelAndView mav = new ModelAndView(); User user = new User();//从数据查询出来 user.setUser_id(user_id); user.setAccount("wukong"); user.setUser_name("悟空"); user.setPassword("123456"); user.setPhoto("1.jpg"); user.setSex("男");//在对象增加属性sex //传递数据 mav.addObject("user", user); //传递到那个页面 mav.setViewName("jsp/update"); return mav; } |
||
|
<form action="update" method="post" > 账号:<input type="text" name="account" value="${user.account }"><br/> 密码:<input type="text" name="password" value="${user.password }"><br/> 姓名:<input type="text" name="user_name" value="${user.user_name }"><br/>
<br/>
<input type="submit" value="用户更新[传统方式]"> <!-- 隐藏域 --> <input type="hidden" name="_method" value="put"> <input type="hidden" name="user_id" value="${user.user_id }"> </form> |
||
|
<h2>SpringMVC表单标签方式,使用标签之后看method的属性使用</h2> <form:form action="update" method="put" commandName="user"> 账号:<form:input path="account"/><br/> 密码:<form:input path="password"/><br/> 姓名:<form:input path="user_name"/><br/>
<br/>
<input type="submit" value="用户更新[标签方式]"> <!-- 隐藏域 --> <form:hidden path="user_id"/> </form:form> |
复选框练习:
|
//用户增加属性 private Integer[] courseArray; public Integer[] getCourseArray() { return courseArray; } public void setCourseArray(Integer[] courseArray) { this.courseArray = courseArray; } |
|
模拟数据准备: List<Course> courseList = new ArrayList<Course>(); Course c = new Course(); c.setCourse_id(100); c.setCourse_name("数学"); courseList.add(c); c = new Course(); c.setCourse_id(200); c.setCourse_name("语文"); courseList.add(c); c = new Course(); c.setCourse_id(300); c.setCourse_name("英语"); courseList.add(c); mav.addObject("courses", courseList); //-----------------结束-------------------------- //用户拥有哪些课程---- 开始--如果使用List<Course>有错误?需要再研究一下??? Integer[] cs = new Integer[]{200,300}; user.setCourseArray(cs); //-----------------结束-------------------------- |
|
传统方式为:[使用了双层for循环,这样的方式不是很好,可以使用二期的jquery来完成] 选择课程: <c:forEach items="${courses }" var="course"> <input type="checkbox" name="courseList" value="${course.course_id }" <c:forEach items="${user.courseArray }" var="c"> <c:if test="${c==course.course_id }">checked="checked"</c:if> </c:forEach> >${course.course_name } </c:forEach> |
|
使用标签的方式为: 复选框: <form:checkboxes items="${courses }" path="courseArray" itemLabel="course_name" itemValue="course_id"/> |
|
模拟选择角色的操作 |
|
//所有的角色查询出来 List<Role> roleList = new ArrayList<>(); Role r = new Role(); r.setRole_id(9999); r.setRole_name("超级管理员"); roleList.add(r); r = new Role(); r.setRole_id(8888); r.setRole_name("管理员"); roleList.add(r); r = new Role(); r.setRole_id(7777); r.setRole_name("测试员"); roleList.add(r); mav.addObject("roleList", roleList); //----在持久化类User中增加 private Role role; 属性 r = new Role(); r.setRole_id(7777); user.setRole(r); |
|
传统方式: <select name="role.role_id"> <c:forEach items="${roleList }" var="role"> <option value="${role.role_id }" <c:if test="${user.role.role_id==role.role_id }">selected="selected"</c:if> >${role.role_name }</option> </c:forEach> </select> 代码说明: <select name="持久化类中的属性是对象,你赋值应该是该对象下的属性"> <c:forEach items="${传递过来的集合名词}" var="role"> <option value="${role.role_id }" <c:if test="${user.role.role_id[对象中值]==role.role_id[遍历的值] }">selected="selected"</c:if> >${role.role_name }</option> </c:forEach> </select> |
|
SpringMVC标签方式: 模拟选择角色: <form:select path="role.role_id"> <form:options items="${roleList }" itemLabel="role_name" itemValue="role_id"/> </form:select> 代码说明: <form:select path="持久化类类中的属性是对象,你赋值应该是该对象下的属性"> <form:options items="${roleList }" itemLabel="role_name[集合中的包含对象下的属性]" itemValue="role_id[集合中的包含对象下的属性]"/> </form:select> |
2.关于添加操作跳转界面使用form标签的说明
|
<body> <h2>添加操作</h2> <form:form method="post" action="add" modelAttribute="user"> 账号:<form:input path="account"/> </form:form> </body> |
|
<h2>添加操作</h2> <form:form method="post" action="add" commandName="user"> 账号:<form:input path="account"/> </form:form> |
|
注: 如果要使用form标签,那么必须要传递一个对象,供我们使用 |
|
解决方案一: public ModelAndView toAddPage(){ ModelAndView mav = new ModelAndView(); mav.addObject(new User());//默认为类名首字小写 mav.setViewName("jsp/add"); return mav; } |
|
注: 方案二把对象放置到了形参中,我们让框架帮我们实例化操作,同时相当于执行了mav.addObject(new User()); |
|
解决方案二: public ModelAndView toAddPage(User user){ ModelAndView mav = new ModelAndView(); //mav.addObject(new User());//默认为类名首字小写 mav.setViewName("jsp/add"); return mav; } |
建议查看SpringMVC的课件中有一个PDF请仔细看看
|
胖先生的微信 |
感觉该文章对你有所帮助,请点击下方的
|
|
第七节 认识SpringMVC中的表单标签的更多相关文章
- [转]SpringMVC<from:form>表单标签和<input>表单标签简介
原文地址:https://blog.csdn.net/hp_yangpeng/article/details/51906654 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标 ...
- 关于Spring MVC中的表单标签库的使用
普通的MVC设计模式中M代表模型层,V代表视图层,C代表控制器,SpringMVC是一个典型的MVC设置模式的框架,对于视图和控制器的优化很多,其中就有与控制器相结合的JSP的表单标签库. 我们先简单 ...
- SpringMVC:学习笔记(5)——数据绑定及表单标签
SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...
- springmvc表单标签库的使用
springmvc中可以使用表单标签库,支持数据绑定,用来将用户输入绑定到领域模型. 例子来源<Servlet.JSP和SpringMVC学习指南> 项目代码 关键代码及说明 bean对象 ...
- struts2学习笔记之表单标签的详解:s:checkbox/radio/select/optiontransferselect/doubleselect/combobox
struts2中的表单标签都是以s标签的方式定义的,同时,struts2为所有标签都提供了一个模板,C:\Users\180172\Desktop\struts2-core-2.2.1.1.jar\t ...
- 第6章—渲染web视图—SpringMVC+Thymeleaf 处理表单提交
SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不同之处,这里操作一个小Demo,并说明: 1.demo的结构图如下所示: pom.xm ...
- SpringMVC 表单标签 & 处理静态资源
使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...
- (转载)SPRINGMVC表单标签简介
SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...
- 第五节:表单标签的用法——value绑定和修饰符
1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如: v-model ...
随机推荐
- 解决 idea 中的 tomcat控制台 和cmd tomcat下的中文乱码问题(win10 64位)
原理:idea控制台里的日志默认是从tomcat的localhost.log 和 catalina.log 两个文件中读出来的. https://blog.csdn.net/zhaijingkui/a ...
- CS50.2
1,ssd硬盘(solid state disk),固态硬盘,固盘. 2,把电磁信号转化为0或者1 ps:记得吧图给加上 反向即从磁盘中得到数据 3,软盘,floppy disk.早期使用的一种存储. ...
- [LOJ#6068]. 「2017 山东一轮集训 Day4」棋盘[费用流]
题意 题目链接 分析 考虑每个棋子对对应的横向纵向的极大区间的影响:记之前这个区间中的点数为 \(x\) ,那么此次多配对的数量即 \(x\) . 考虑费用流,\(S\rightarrow 横向区间 ...
- 记录:测试本机下使用 GPU 训练时不会导致内存溢出的最大参数数目
本机使用的 GPU 是 GeForce 840M,2G 显存,本机内存 8G. 试验时,使用 vgg 网络,调整 vgg 网络中的参数,使得使用对应的 batch_size 时不会提示内存溢出.使用的 ...
- jmeter --http属性管理器
1,http请求默认值 2,HTTP授权管理器 3,HTTP缓存管理 4,HTTP cookie 管理器 5,HTTP头文管理器
- C# List left join
public class Test1 { public int ID { get; set; } public string Name { get; set; } } public class Tes ...
- 关于最近996.icu的一点感想
最近这个996.ICU的话题讨论的火热,特别是一些业界大佬有直言不讳的说就是要996,有的弄些鸡汤文把996说成年轻人就该这样的.作为一个普通的码农,实在是看不下去了,在这里说些自己的看法,希望年轻人 ...
- Codeforces Round #546 (Div. 2) E - Nastya Hasn't Written a Legend
这题是一个贼搞人的线段树 线段树维护的是 区间和a[i - j] 首先对于update的位置可以二分查找 其次update时候的lazy比较技巧 比如更新的是 l-r段,增加的是c 那么这段的值为: ...
- 云平台项目--学习经验--回调函数中call和apply
Js中可以通过call和apply来代替另一个对象调用一个方法,将一个函数对象上下文从初始上下文改变为thisObj指定的新对象.简而言之,改变函数执行的上下文,而call和apply的基本区别在于他 ...
- ElasticSearch 2 (30) - 信息聚合系列之条形图
ElasticSearch 2 (30) - 信息聚合系列之条形图 摘要 版本 elasticsearch版本: elasticsearch-2.x 内容 聚合还有一个令人激动的特性就是能够十分容易地 ...


