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

--胖先生

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. springboot打包成war后部署项目出现异常 LifecycleException: Failed to start component

    完整异常:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Sta ...

  2. bootstrap-validator基本使用(自定义验证身份证号和手机号)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. Js_特效II

    字号缩放 让文字大点,让更多的用户看的更清楚.(也可以把字体变为百分比来实现)<script type="text/javascript">  function doZ ...

  4. 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois Puget

    目录 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois Puget 正文 对我的启发 机器学习英雄访谈录之双料 Kaggle 大师:Dr. Jean-Francois ...

  5. MyBatis3-动态SQL语句

    MyBatis的动态SQL语句是基于OGNL表达式的.可以方便的在SQL语句中实现某些逻辑,总体说来MyBatis动态SQL语句主要有以下几类: 1.if语句(简单的条件判断). 2.choose(w ...

  6. PAT甲题题解-1027. Colors in Mars (20)-水。。。

    #include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...

  7. 团队博客 Week14

    0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新.最稳定版本的软件编译出 ...

  8. final-review

    小组名称:飞天小女警 项目名称:礼物挑选小工具 小组成员:沈柏杉(组长).程媛媛.杨钰宁.谭力铭 会议时间:12月2号12点 会议内容: 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是 ...

  9. 四则运算生成程序——GUI支持和部分功能改进

    项目成员:张金生     张政 工程地址: https://coding.net/u/jx8zjs/p/paperOne/git ssh://git@git.coding.net:jx8zjs/pap ...

  10. webpack打包使用

    md创建文件夹 dir是遍历 如何安装node环境 首先下载安装包;安装好以后 使用cmd命令 建立一个新的文件夹(一定是英文的),然后cmd 命令中 cd 进入所安装的盘的地址. 在该文件夹下面 使 ...