第七节 认识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 ...
随机推荐
- 使用Python实时获取cmd的输出
最近发现一个问题,一个小伙儿写的console程序不够健壮,监听SOCKET的时候容易崩,造成程序的整体奔溃,无奈他没有找到问题的解决办法,一直解决不了,可是这又是一个监控程序,还是比较要紧的,又必须 ...
- 作业六:小学生四则运算之NABCD模型与产品Backlog。
NABCD模型与产品Backlog NABCD模型 ) N (Need 需求) 方便了老师和学生,使他们可以想要的时候随时可以得到,省时省力,快速出题,马上得到答案. ) A (Approach 做法 ...
- A总结
Alpha 答辩总结 评审表 组名 格式 内容 ppt 演讲 答辩 总计 天机组 15 15 14 15 14 73 PMS 16 16 15 15 16 78 日不落战队 16 16 16 15 1 ...
- 单片机内程序运行的时候ram空间是如何分配的?
转自:http://blog.sina.com.cn/s/blog_a575eb9401014tam.html 单片机内程序运行的时候ram空间是如何分配的?我现对一个程序进行减少片内ram的使用的优 ...
- Software-Defined Networking:A Comprehensive Survey--Day1
Software-Defined Networking:A Comprehensive Survey 摘要: 传统网络复杂且难以管理,根据预定义策咯也难以对网络进行配置,也难以重新配置. 软件定义网络 ...
- 评论beta发布
1. 组名:飞天小女警 项目名:礼物挑选小工具 评价:该系统可以通过选择所要接礼的人的性别.年龄和与送礼者的关系及所要送礼的价值,就可以推荐出所送的礼物.还可以通过男/女所选的Top前10进行简单推荐 ...
- django学习--2 模板
Django 模板 在上一章节中我们使用 django.http.HttpResponse() 来输出 "Hello World!".该方式将数据与视图混合在一起,不符合 Djan ...
- MyBatis中Mapper的返回值类型
insert.update.delete语句的返回值类型 对数据库执行修改操作时,数据库会返回受影响的行数. 在MyBatis(使用版本3.4.6,早期版本不支持)中insert.update.del ...
- BOM之screen对象
前面的话 screen对象在javascript编程中,比较冷门,不太常用.screen对象用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素高度和宽度等.本文将详细介绍screen对 ...
- 题解 P1184 【高手之在一起】
好!机会来了! 依评论区的要求,小金羊献上STLset<string>的题解. 当然不会告诉你map<string,bool>我根本不会用 所以,有什么内置的成员函数救救孩子? ...


