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

--胖先生

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. 使用Python实时获取cmd的输出

    最近发现一个问题,一个小伙儿写的console程序不够健壮,监听SOCKET的时候容易崩,造成程序的整体奔溃,无奈他没有找到问题的解决办法,一直解决不了,可是这又是一个监控程序,还是比较要紧的,又必须 ...

  2. 作业六:小学生四则运算之NABCD模型与产品Backlog。

    NABCD模型与产品Backlog NABCD模型 ) N (Need 需求) 方便了老师和学生,使他们可以想要的时候随时可以得到,省时省力,快速出题,马上得到答案. ) A (Approach 做法 ...

  3. A总结

    Alpha 答辩总结 评审表 组名 格式 内容 ppt 演讲 答辩 总计 天机组 15 15 14 15 14 73 PMS 16 16 15 15 16 78 日不落战队 16 16 16 15 1 ...

  4. 单片机内程序运行的时候ram空间是如何分配的?

    转自:http://blog.sina.com.cn/s/blog_a575eb9401014tam.html 单片机内程序运行的时候ram空间是如何分配的?我现对一个程序进行减少片内ram的使用的优 ...

  5. Software-Defined Networking:A Comprehensive Survey--Day1

    Software-Defined Networking:A Comprehensive Survey 摘要: 传统网络复杂且难以管理,根据预定义策咯也难以对网络进行配置,也难以重新配置. 软件定义网络 ...

  6. 评论beta发布

    1. 组名:飞天小女警 项目名:礼物挑选小工具 评价:该系统可以通过选择所要接礼的人的性别.年龄和与送礼者的关系及所要送礼的价值,就可以推荐出所送的礼物.还可以通过男/女所选的Top前10进行简单推荐 ...

  7. django学习--2 模板

    Django 模板 在上一章节中我们使用 django.http.HttpResponse() 来输出 "Hello World!".该方式将数据与视图混合在一起,不符合 Djan ...

  8. MyBatis中Mapper的返回值类型

    insert.update.delete语句的返回值类型 对数据库执行修改操作时,数据库会返回受影响的行数. 在MyBatis(使用版本3.4.6,早期版本不支持)中insert.update.del ...

  9. BOM之screen对象

    前面的话 screen对象在javascript编程中,比较冷门,不太常用.screen对象用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素高度和宽度等.本文将详细介绍screen对 ...

  10. 题解 P1184 【高手之在一起】

    好!机会来了! 依评论区的要求,小金羊献上STLset<string>的题解. 当然不会告诉你map<string,bool>我根本不会用 所以,有什么内置的成员函数救救孩子? ...