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

--胖先生

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. 4字节emoji表情对应的Unicode编码获取和编码转换

    GitHub Flavored Markdown 今天研究了一天Markdown移动端和pc端统一实现方式,由于以前有搞过移动端富文本编辑器,搞Markdown简单多了: 其中GFM的表情语法不错,比 ...

  2. Markdown 入门指南

    导语: Markdown是一种轻量级的标记语言,语法简单,学习成本不算太高,但确实可以让你专注于文字,不用太分心与排版等等. Markdown 官方文档 这里可以看到官方的Markdown语法规则: ...

  3. Zabbix使用总结

    1. CentOS 7上启动zabbix-server失败,/var/log/messages中的报错信息如下: Feb :: mysql-server1 systemd: Starting Zabb ...

  4. 完爆Facebook/GraphQL,APIJSON全方位对比解析(三)-表关联查询

    相关阅读: 完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能 完爆Facebook/GraphQL,APIJSON全方位对比解析(二)-权限控制 自APIJSON发布 ...

  5. 一个web应用的诞生(3)--美化一下

    经过上一章的内容,其实就页面层来说已结可以很轻松的实现功能了,但是很明显美观上还有很大的欠缺,现在有一些很好的前端css框架,如AmazeUI,腾讯的WeUI等等,这里推荐一个和flask集成很好的b ...

  6. 在nodejs中引进模块要经历的步骤

    在nodejs中引入模块需要经历如下3个步骤 1.路径分析 2.文件定位 3.编译执行 在nodejs中模块分为两类,一类是nodejs提供的模块,称为核心模块,另一类的用户编写的模块,称为文件模块. ...

  7. OD之破解密钥文件授权(三)

    除了上次的序列号验证以外,还有这种密钥授权模式,需要密钥文件授权才能打开文件; 老办法,先拖进OD中动态分析再说: 然后F8进行调试这时候发现了一个条件跳转函数jnz下面是说跳转未实现,那我们发现上面 ...

  8. PAT甲题题解-1110. Complete Binary Tree (25)-(判断是否为完全二叉树)

    题意:判断一个节点为n的二叉树是否为完全二叉树.Yes输出完全二叉树的最后一个节点,No输出根节点. 建树,然后分别将该树与节点树为n的二叉树相比较,统计对应的节点个数,如果为n,则为完全二叉树,否则 ...

  9. 【Alpha】第五次Scrum meeting

    今日重大事件一览: 姓名 今日完成任务 所耗时间 刘乾 今日没有完成那个Issue..TuT第一次这么努力工作的我没有完成任务...真的是任务太坑啦. 任务完成了 60% Issue链接:https: ...

  10. akm

    队名--牛肉面不要牛肉不要面 队伍成员 211406285 林志松 [队长兼前端开发] 211606368 林书浩 [系统设计] 211606357 陈远军 [UI美工] 211606335 吴沂章 ...