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

--胖先生

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. R绘图 第五篇:绘制散点图(ggplot2)

    ggplot2包中绘制点图的函数有两个:geom_point和 geom_dotplot,当使用geom_dotplot绘图时,point的形状是dot,不能改变点的形状,因此,geom_dotplo ...

  2. flask_admin 笔记四 自定义视图

    定义自己的视图 对于您的要求非常具体的情况,您很难用内置的ModelView类来满足这些需求,Flask-Admin使您可以轻松地完全控制并将自己的视图添加到界面中. 1)独立视图 可以通过扩展Bas ...

  3. pandas 初识(四)

    Pandas 和 sqlalchemy 配合实现分页查询 Mysql 并获取总条数 @api.route('/show', methods=["POST"]) def api_sh ...

  4. Linux下安装maven(mvn命令)

    Maven(mvn)是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具(百度百科) 简单理解为一个打包 ...

  5. Linux内核分析第十八章读书笔记

    第十八章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点. 18.1 准备开始 我们需要什么? 一个bug 一个藏匿bug的内核版本 思路:假定能够让bug重现 在用户级程序中,bug直 ...

  6. 11th 回顾5个问题

    当初提出的5个问题: 1.书中说很多非常成功的软件都是赢在用户体验,后面的第12章也专门提到了用户体验,说软件开发时可以使用5W1H的方法来判断用户的体验,而需求分析需要获取用户需求,进行用户调研,那 ...

  7. Linux命令(七)查找文件或目录 find

    find 命令可以根据给定的路劲和表达式查找指定的文件或目录.find 参数选项很多,并且支持正则表达式,功能强大. 和管道结合使用可以实现复杂的功能,是系统管理和普通用户必须掌握的命令. 一.fin ...

  8. [51CTO]服务器虚拟化开源技术主流架构之争

    服务器虚拟化开源技术主流架构之争 http://virtual.51cto.com/art/201812/589084.htm 大部分客户已经是KVM+OpenStack的架构了 我所见到的 工商云 ...

  9. layout图形化界面看不到内容 Failed to find the style corresponding to the id

    1.问题 在创建新的工程的时候,选择目标SDK为api21,编译SDK为api23.创建出来的layout文件图形化界面中看不到,并且报错: Failed to find the style corr ...

  10. 32位机和64位机下面各类型sizeof的大小

    ---<这种类型的题目出的太多了,还是整理下吧!>--- 一.机器平台:X86_64 处理器 操作系统:Red Hat 4.1.2-14 编译器: gcc version 4.1.2 20 ...