所谓成熟,就是:
你要习惯,任何人的忽冷忽热;
也要看淡,任何人的渐行渐远;

--胖先生

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>

注: commandNamemodelAttribute必须对应的是一个持久化类或者传输对象,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/>

单选按钮:<!-- 需要使用C标签进行判断,如果是中文需要使用单引号 -->

<input type="radio" name="sex" value="男"

<c:if test="${user.sex=='' }">checked="checked"</c:if>

>男生&nbsp;&nbsp;

<input type="radio" name="sex" value="女"

<c:if test="${user.sex=='' }">checked="checked"</c:if>

>女生&nbsp;&nbsp;

<br/>

下拉列表:

<select name="sex">

<option value="女"

<c:if test="${user.sex=='' }">selected="selected"</c:if>

>女生</option>

<option value="男"

<c:if test="${user.sex=='' }">selected="selected"</c:if>

>男生</option>

</select>

<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/>

单选按钮:<!-- 标签会给我们进行判断path="类中的属性" -->

<form:radiobutton path="sex" value="女"/>女士&nbsp;&nbsp;

<form:radiobutton path="sex" value="男"/>男士&nbsp;&nbsp;

<br/>

下拉列表:<!-- 显示值需要卸载标签之间的位置 -->

<form:select path="sex">

<form:option value="女">女士</form:option>

<form:option value="男">男士</form:option>

</form:select>

<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 }&nbsp;&nbsp;

</c:forEach>

使用标签的方式为:

复选框:

<form:checkboxes items="${courses }" path="courseArray" itemLabel="course_name" itemValue="course_id"/>
对应代码说明:
<form:checkboxes items="${这个位置只能使用el表达式的集合}" path="类中的属性" itemLabel="集合对象中的要显示值" itemValue="集合对象中的要传递的值"/>

模拟选择角色的操作

//所有的角色查询出来

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标签,那么必须要传递一个对象,供我们使用

解决方案一:
@RequestMapping(value="/add",method=RequestMethod.GET)

public ModelAndView toAddPage(){

ModelAndView mav = new ModelAndView();

mav.addObject(new User());//默认为类名首字小写

mav.setViewName("jsp/add");

return mav;

}

注: 方案二把对象放置到了形参中,我们让框架帮我们实例化操作,同时相当于执行了mav.addObject(new User());

解决方案二:
@RequestMapping(value="/add",method=RequestMethod.GET)

public ModelAndView toAddPage(User user){

ModelAndView mav = new ModelAndView();

//mav.addObject(new User());//默认为类名首字小写

mav.setViewName("jsp/add");

return mav;

}


建议查看SpringMVC的课件中有一个PDF请仔细看看

胖先生的微信

感觉该文章对你有所帮助,请点击下方的
推荐↓↓↓↓↓↓↓↓↓↓
您的支持是我最大的动力

支付宝
扫一扫

第七节 认识SpringMVC中的表单标签的更多相关文章

  1. [转]SpringMVC<from:form>表单标签和<input>表单标签简介

    原文地址:https://blog.csdn.net/hp_yangpeng/article/details/51906654 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标 ...

  2. 关于Spring MVC中的表单标签库的使用

    普通的MVC设计模式中M代表模型层,V代表视图层,C代表控制器,SpringMVC是一个典型的MVC设置模式的框架,对于视图和控制器的优化很多,其中就有与控制器相结合的JSP的表单标签库. 我们先简单 ...

  3. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  4. springmvc表单标签库的使用

    springmvc中可以使用表单标签库,支持数据绑定,用来将用户输入绑定到领域模型. 例子来源<Servlet.JSP和SpringMVC学习指南> 项目代码 关键代码及说明 bean对象 ...

  5. struts2学习笔记之表单标签的详解:s:checkbox/radio/select/optiontransferselect/doubleselect/combobox

    struts2中的表单标签都是以s标签的方式定义的,同时,struts2为所有标签都提供了一个模板,C:\Users\180172\Desktop\struts2-core-2.2.1.1.jar\t ...

  6. 第6章—渲染web视图—SpringMVC+Thymeleaf 处理表单提交

    SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不同之处,这里操作一个小Demo,并说明: 1.demo的结构图如下所示: pom.xm ...

  7. SpringMVC 表单标签 & 处理静态资源

    使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...

  8. (转载)SPRINGMVC表单标签简介

    SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...

  9. 第五节:表单标签的用法——value绑定和修饰符

    1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如:  v-model ...

随机推荐

  1. Django实现websocket完成实时通讯、聊天室、在线客服等

    一 什么是Websocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在WebS ...

  2. Java 多线程之 Thread 类 和 Runnable 接口初步使用

    目录 Thread 类 Thread之定义线程类 Thread之开启线程 Runnable 接口 Runnable 之定义线程类 Runnable 之开启线程 @ Thread 类 Thread 类是 ...

  3. arduino驱动安装

    方法一:使用官方提供的一键安装程序安装 打开Arduino在你电脑上的位置如果你的电脑是32位系统,就运行dpinst-x86.exe如果是64位系统,就运行dpinst-amd64.exe然后在弹出 ...

  4. JAVA笔试准备

    建立时间:2019.4.19 修改时间: 腾讯:选择题(30个,一小时内),简答(2道)和编程题(2道) 涉及内容:(也有可能全是算法)C++,JAVA,数据结构,网络,Linux,计算题 1. 磁盘 ...

  5. Linux内核分析作业 NO.4

    扒开系统调用的三层皮(上) 于佳心 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 ...

  6. Linux内核分析 实验一 ——by王玥

    一.实验内容 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码, ...

  7. C#ToString() 格式化数值

    格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符,控制格式化输出的有效位数或小数位数. 格式说明符 说明 示例 输出 C 货币 2.5.ToString(&q ...

  8. react-router JS 控制路由跳转(转载)

    Link组件用于正常的用户点击跳转,但是有时还需要表单跳转.点击按钮跳转等操作.这些情况怎么跟React Router对接呢? 下面是一个表单. <form onSubmit={this.han ...

  9. 『编程题全队』Beta 阶段冲刺博客集合

    『编程题全队』Beta 阶段冲刺博客集合 »敏捷冲刺 日期:2018.5.23 博客连接:『编程题全队』Scrum 冲刺博客 »Day1 日期:2018.5.23 博客连接:『编程题全队』Beta 阶 ...

  10. PAT 甲级 1105 Spiral Matrix

    https://pintia.cn/problem-sets/994805342720868352/problems/994805363117768704 This time your job is ...