第七节 认识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 ...
随机推荐
- springboot打包成war后部署项目出现异常 LifecycleException: Failed to start component
完整异常:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Sta ...
- bootstrap-validator基本使用(自定义验证身份证号和手机号)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Js_特效II
字号缩放 让文字大点,让更多的用户看的更清楚.(也可以把字体变为百分比来实现)<script type="text/javascript"> function doZ ...
- 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois Puget
目录 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois Puget 正文 对我的启发 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois ...
- MyBatis3-动态SQL语句
MyBatis的动态SQL语句是基于OGNL表达式的.可以方便的在SQL语句中实现某些逻辑,总体说来MyBatis动态SQL语句主要有以下几类: 1.if语句(简单的条件判断). 2.choose(w ...
- PAT甲题题解-1027. Colors in Mars (20)-水。。。
#include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...
- 团队博客 Week14
0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新.最稳定版本的软件编译出 ...
- final-review
小组名称:飞天小女警 项目名称:礼物挑选小工具 小组成员:沈柏杉(组长).程媛媛.杨钰宁.谭力铭 会议时间:12月2号12点 会议内容: 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是 ...
- 四则运算生成程序——GUI支持和部分功能改进
项目成员:张金生 张政 工程地址: https://coding.net/u/jx8zjs/p/paperOne/git ssh://git@git.coding.net:jx8zjs/pap ...
- webpack打包使用
md创建文件夹 dir是遍历 如何安装node环境 首先下载安装包;安装好以后 使用cmd命令 建立一个新的文件夹(一定是英文的),然后cmd 命令中 cd 进入所安装的盘的地址. 在该文件夹下面 使 ...