第七节 认识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 ...
随机推荐
- PowerBI开发 第十一篇:报表设计技巧(更新)
PowerBI版本在持续的更新,这使得报表设计能够实现更多新的功能,您可以访问 PowerBI Blog查看PowerBI的最新更新信息,本文总结了PowerBI新版本的重要更新和设计技巧. 我的Po ...
- 《无所不能的JavaScript编程系列:setTimeout 简笔》
前言:问题引出 JavaScript中会经常用到setTimeout来推迟一个函数的执行,如: setTimeout(function(){alert("Hello World") ...
- Python读取ini配置文件封装方法
读取配置文件 ----rw_ini.py from configparser import ConfigParser def read_config(config_file_path:str): &q ...
- 使用pyspark模仿sqoop从oracle导数据到hive的主要功能(自动建表,分区导入,增量,解决数据换行符问题)
最近公司开始做大数据项目,让我使用sqoop(1.6.4版本)导数据进行数据分析计算,然而当我们将所有的工作流都放到azkaban上时整个流程跑完需要花费13分钟,而其中导数据(增量)就占了4分钟左右 ...
- Apache Ignite 学习笔记(二): Ignite Java Thin Client
前一篇文章,我们介绍了如何安装部署Ignite集群,并且尝试了用REST和SQL客户端连接集群进行了缓存和数据库的操作.现在我们就来写点代码,用Ignite的Java thin client来连接集群 ...
- cf 1029D
题面 题目描述 给定含n个整数的数组a. 规定数x,y的合并为xy.如:数12与数3456的合并为数123456. 有数组中的位置对(i,j)(i≠j),计算使ai,aj的合并能被k整除的位置对数量. ...
- PAT甲题题解-1044. Shopping in Mars (25)-水题
n,m然后给出n个数让你求所有存在的区间[l,r],使得a[l]~a[r]的和为m并且按l的大小顺序输出对应区间.如果不存在和为m的区间段,则输出a[l]~a[r]-m最小的区间段方案. 如果两层fo ...
- 11慕课网《进击Node.js基础(一)》Buffer和Stream
Buffer 用来保存原始数据 (logo.png) 以下代码读取logo.png为buffer类型 然后将buffer转化为string,新建png 可以将字符串配置: data:image/png ...
- 动态绑定,多态,static
1:下面程序的输出结果为: class base2{ static{ System.out.println("static base2"); } } public class te ...
- 运用visual studio进行简单的单元测试
昨天下午安装了visual studio,本打算晚上进行单元测试的,但当我再打开的时候就让我选择修复或卸载,修复完之后还是不能用,顿时觉得心好累啊,后来室友说要更新update5,点了更新之后就是无情 ...