前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >表单数据回显

表单数据回显

作者头像
Twcat_tree
发布于 2022-11-30 11:00:27
发布于 2022-11-30 11:00:27
1.3K0
举报
文章被收录于专栏:二猫の家二猫の家

一. 概念:

  在数据提交出现错误的时候, 已填写的信息仍在文本框中, 比如用户登录, 当用户输入错误的密码之后, 用户名仍在文本框, 只是密码框清空

二. 意义:

  对于一些要填写很多信息的表单, 如果因为一些错误导致已经填写的整个表单信息重新填写, 对于用户非常地不友好

三. 回显方法:

  1. 默认情况

POJO数据传入controller方法后, springMvc自动将POJO数据放到request域, key等于POJO类的首字母小写

  ** 实验:

  (1) 在商品名称填错的情况下, 点击"提交"按钮, 其他数据仍在[注意, POJO类:ItemsCustom, 在jsp页面取值形式:value="${itemsCustom.name }"]

  (2) 修改Handler的响应POJO类的key[属性]

// 商品信息修改页面的展示

@RequestMapping("/editItems")

public String editItems(Model model, Integer id) throws Exception {

// 根据id获取商品信息

ItemsCustom itemsCustom = itemsService.findItemsById(id);

model.addAttribute("items", itemsCustom);  // 改之前是itemsCustom

return "items/editItems";

}

  页面获取数据的形式

1 <table border="1" cellpadding="5" cellspacing="1" style="width: 30%">

2 <tr>

3 <td>商品名称</td>

4 <td>

5 <input type="text" name="name" value="${items.name }"/>

6 </td>

7 </tr>

8 <tr><td>商品价格</td><td><input type="text" name="price" value="${items.price }"/></td></tr>

9 <tr><td>生产日期</td>

10 <td>

11 <input type="text" name="createtime" value='<fmt:formatDate value="${items.createtime }" pattern="yyyy-MM-dd HH:mm:ss"/>'

12 class="laydate-icon" οnclick="laydate()"/>

13 </td>

14 </tr>

15 <tr><td>商品描述</td><td><textarea rows="3" cols="40" name="detail">${items.detail }</textarea></td></tr>

16 </table>

  在这种情况下, Handler可以正常向jsp页面响应数据, 但是由于传递的key值是items, 不等于POJO类ItemsCustom的首字母小写, 当商品名称填写出错时

无法进行数据回显, 数据全部消失, 需要重新填写, 如下:

 2. 非默认情况下的数据回显解决方法

  插入一个知识点: @ModelAttribute这个注解还可以将方法的返回值响应到页面

Handler代码:

1 // 模拟@ModelAttribute注解将方法的返回值响应到页面的试验[静态数据] 2 @ModelAttribute("itemsTypes") 3 public Map<String, String> getItemsTypes() { 4 Map<String, String> itemsTypes = new HashMap<String, String>(); 5 // 静态数据, 开发中要去数据库获取 6 itemsTypes.put("101", "数码"); 7 itemsTypes.put("102", "母婴"); 8 itemsTypes.put("103", "家电"); 9 return itemsTypes; 10 }

jsp代码:

1 <td style="width: 190px"> 商品类型:

2 <select name="types" style="width: 100px">

3 <c:forEach items="${itemsTypes }" var="type">

4 <option value="${type.key }">${type.value }</option>

5 </c:forEach>

6 </select>

7 </td>

运行:

因此, 做一个实验: 注明(静态数据)

 在"提交"按钮对应的Handler方法中, 添加注解@ModelAttribute("items"),  里面的key值, 刚好是jsp页面用于取值的key, 这时候可以进行数据回显

除此之外, 对于数据回显, 还有比添加@ModelAttribute注解方法更简单的方法, 那就是: 直接将要回显的数据放入Model中

 但是对于简单类型的属性, springMvc不支持回显, 只能通过Model方法实现: model.addAttribute("id", id);

总结数据回显的方法:

  1. 使用springMvc默认的方法, 保持jsp中取值的key和POJO类名的首字母小写一致;

  2. 使用@ModelAttribute注解, jsp中取值的key和POJO类名的首字母小写可以不一致;

  3. 使用Model, 直接将数据放入Model对象中

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringMVC学习笔记之一(SpringMVC架构及与Mybatis整合)
一、SpringMVC入门 1.1Springmvc是什么   Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来
Kevin_Zhang
2018/07/05
1.2K0
day64_SpringMVC学习笔记_02
注意:springmvc本身就支持xml格式,所以不用导入其他支持的jar包了。
黑泽君
2018/12/04
8660
day64_SpringMVC学习笔记_02
SpringMVC框架之第三篇
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
海仔
2019/10/22
1.2K0
SpringMVC获取表单数据(radio和checkbox)
1、实体类 package cn.hadron.bean; import java.io.Serializable; import java.util.Arrays; /** * create table users( id int auto_increment primary key, username varchar(45), password varchar(45), age int default 0 ); insert into users
程裕强
2022/05/06
9350
SpringMVC获取表单数据(radio和checkbox)
Springmvc学习总结
4、在web.xml中配置SpringMVC的前端控制器DispatcherServlet
曼路
2018/10/18
3770
Springmvc学习总结
SpringMVC框架之第二篇
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
海仔
2019/10/22
9190
SpringMVC【参数绑定、数据回显、文件上传】
前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定… 默认支持的参数类型 从上面的用法我们可以发现,我们可以使用request对象、Model对象等等,其实是不是可以随便把参数写上去都行???其实并不是的… Controller方法默认支持的参数类型有4个,这4个足以支撑我们的日常开发了 HttpServletRequest HttpServletResponse
Java3y
2018/04/02
1.5K0
SpringMVC【参数绑定、数据回显、文件上传】
spring常用注解
处理器(后端控制器)Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示,在SpringMVC 中提供了一个非常简便的定义Controller 的方法:@Controller,用于标记在一个类上
用户10325771
2023/03/14
8240
spring常用注解
SpringMVC+Mybatis框架搭建
1. 准备环境 ---- 1. 所需jar包 数据库驱动包 mybatis jars mybatis和spring的整合包 log4j包 数据库连接池包 dbcp spring包 jstl junit
山海散人
2021/03/03
5620
SpringMVC+Mybatis框架搭建
SpringMVC详细笔记整合
原文链接: 1、SpringMVC——走出新手村 2、SpringMVC——初次见面 3、SpringMVC——走出新手村
Java学习
2018/07/25
9590
SpringMVC详细笔记整合
springMVC 学习笔记(一):spring 入门
springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整合。springMVC 是一个基于 mvc 的 web 框架。
希希里之海
2018/10/09
4890
springMVC 学习笔记(一):spring 入门
SpringMVC入门第三部分
访问index.jsp---->直接发送/emps请求----->控制器查询所有员工-------->放在请求域中-------->转发到list页面进行展示
大忽悠爱学习
2021/11/15
7480
SpringMVC框架之第四篇
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
海仔
2019/10/22
7120
SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一、高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除。 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品id删除商品信息。我们演示可以获取id的数组即可。 【Jsp修改】 修改itemList.jsp页面,增加多选框,提交url是queryItem.action <form action="${pageContext.request.contextPath }/queryItem.actio
Kevin_Zhang
2018/07/05
2.1K0
SpringMVC学习笔记(三) --- 参数绑定
要根据id查询商品数据,需要从请求的参数中把请求的id取出来。Id应该包含在Request对象中。可以从Request对象中取id。
挽风
2021/04/13
1.2K0
SpringMVC学习笔记(三) --- 参数绑定
跟松哥学 SpringMVC(2/2)
SpringMVC 中对文件上传做了封装,我们可以更加方便的实现文件上传。从 Spring3.1 开始,对于文件上传,提供了两个处理器:
江南一点雨
2020/01/02
8660
Spring MVC 学习总结(六)——Spring+Spring MVC+MyBatis框架集成
与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和视图管理, MyBatis作为数据对象持久化引擎。这样搭配的优点是:轻量、自由度高、Spring与Spring MVC契合度更好。通过一个商品管理示例完成SSM框架的集成,可以将前面学习过的一些内容整合起来,使用到的知识包含:Spring、Spring MVC、MyBatis、JSR303校验、分页、文件上传、路径处理等。
张果
2022/05/09
8820
Spring MVC 学习总结(六)——Spring+Spring MVC+MyBatis框架集成
springMVC
新建goods包,并在goods包下创建model、repository、service、controller四个包,在/WEB-INF/views下创建goods文件夹
周杰伦本人
2023/10/12
1370
Struts2【UI标签、数据回显、资源国际化】
Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签…也就是显示页面的标签….. 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再被浏览器解析,最后才显示在页面上的。因此,它的性能是不够HTML标签好的…HTML直接就能够被浏览器解析 还有一点是:我们在写网页的时候,肯定是需要使用div+css的页面布局的。使用Struts2UI标签也没法干了….因此,除了有必要的话,才去使用Struts2UI标签 简单使用Struts2UI标签 <%--我们发
Java3y
2018/03/15
1K0
Struts2【UI标签、数据回显、资源国际化】
java中pageInfo分页带条件查询+查询条件的回显「建议收藏」
代码如下:解析在下边 Jetbrains全家桶1年46,售后保障稳定 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- Created by IntelliJ IDEA. User: Administrator Date: 2018/1/17 Time: 19:10 To chan
全栈程序员站长
2022/11/17
3.7K0
相关推荐
SpringMVC学习笔记之一(SpringMVC架构及与Mybatis整合)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档