springmvc 结合ajax批量新增

目录

    • 1. 需要注意的问题
    • 2. 页面代码
    • 3. controller定义参数接收

1. 需要注意的问题

  • mvc框架的处理日期问题
  • @ResponseBody响应对象是自定义对象,响应不是json
  • @ResopnseBody响应自定义对象时,日期为是long类型的数
  • 结束数据方法的参数,该如何定义?接收多个对象?

2. 页面代码

<%@ page language="java" isELIgnored="false" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ajax批量新增操作</title><script type="text/javascript" src="js/jquery-3.4.1.js"></script></head><body><form id="myForm"><table border="1" ><tr><td>姓名</td><td>身份证</td><td>时间</td><td>direction</td><td>type</td><td>操作</td></tr><tbody id="tbody"><tr><td><!-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。 --><input type="text" name="visitorList[0].name"/></td><td><input type="text" name="visitorList[0].cardNo"/></td><td><input type="date" name="visitorList[0].visitorTime"/></td><td><input type="radio" value="1" name="visitorList[0].direction"/>进入<input type="radio" value="2" name="visitorList[0].direction"/>离开</td>					<td><input type="radio" value="1" name="visitorList[0].type"/> 内部<input type="radio" value="2" name="visitorList[0].type"/> 外部</td><td><input class="remove" type="button" value="移除"></td>										</tr></tbody><tr><td colspan="6"><input id="add" type="button" value="新增visitor" /><input id="save" type="button" value="保存"/></td></tr></table></form><script>$(function() {var index_val = 0;$("body").on('click', '.remove', function() {// 移除当前行, 通过父级来绑定...// $(this).parent().parent().remove();$("#tbody tr").remove();// 覆盖,生成行if (index_val > 0) {var data_str = "";for (var i = 0; i < index_val; i++) {data_str += "<tr>" +"<td>" +"	<input type='text' name='visitorList[" + i + "].name'/>" +"</td>" +                   "<td>" +                    "	<input type='text' name='visitorList[" + i + "].cardNo'/>" +"</td>" +                 "<td>" +                  "	<input type='date' name='visitorList[" + i + "].visitorTime'/>" +"</td>" +"<td>" +"	<input type='radio' value='1' name='visitorList[" + i + "].direction'/>进入" +"	<input type='radio' value='2' name='visitorList[" + i + "].direction'/>离开" +"</td>" +					"<td>" +                                                    "	<input type='radio' value='1' name='visitorList[" + i + "].type'/> 内部" +"	<input type='radio' value='2' name='visitorList[" + i + "].type'/> 外部" +"</td>" +"<td>" +"	<input class='remove' type='button' value='移除'>" +"</td>" +										"</tr>";						}$("#tbody").append(data_str);}// 把下标减少一 就行了,就是移除了。index_val --;console.log("remove: ", index_val);});$("#add").click(function() {// 自增1index_val ++;var data_str = "<tr>" +"<td>" +"	<input type='text' name='visitorList[" + index_val + "].name'/>" +"</td>" +                   "<td>" +                    "	<input type='text' name='visitorList[" + index_val + "].cardNo'/>" +"</td>" +                 "<td>" +                  "	<input type='date' name='visitorList[" + index_val + "].visitorTime'/>" +"</td>" +"<td>" +"	<input type='radio' value='1' name='visitorList[" + index_val + "].direction'/>进入" +"	<input type='radio' value='2' name='visitorList[" + index_val + "].direction'/>离开" +"</td>" +					"<td>" +                                                    "	<input type='radio' value='1' name='visitorList[" + index_val + "].type'/> 内部" +"	<input type='radio' value='2' name='visitorList[" + index_val + "].type'/> 外部" +"</td>" +"<td>" +"	<input class='remove' type='button' value='移除'>" +"</td>" +										"</tr>";					$("#tbody").append(data_str);console.log("add==>" + index_val);});$("#save").click(function() {var form_data = $("#myForm").serialize();// console.log(form_data)$.ajax({url: "visitor/batchAdd",type: "post",data: form_data,success: function(data) {console.log(data);},error: function(e) {console.log(e);}});});});</script></body>
</html>

js学得terrible… 能够移除,我的移除是先移除所有的行,重新生成行,比较之前生成的行,少一行。

3. controller定义参数接收

实体类VisitorInfo


package cn.bitqian.entity;import java.util.Date;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;import org.springframework.format.annotation.DateTimeFormat;import com.fasterxml.jackson.annotation.JsonFormat;@Table(name="visit_info")
@Entity(name="VisitorInfo")
public class VisitorInfo {@Id@GeneratedValue(strategy=GenerationType.AUTO)private Integer id;private String name;@Column(name="card_no")private String cardNo;@Column(name="visitor_time") // datetime@DateTimeFormat(pattern="yyyy-MM-dd") // 页面提交来的@JsonFormat(pattern="yyyy-MM-dd") // 服务器响应回来的json日期格式private Date visitorTime;private Integer direction; // 1进入 2 离开private Integer type; // 1. 内部 2. 外部public VisitorInfo() {}public VisitorInfo(Integer id, String name, String cardNo, Date visitorTime, Integer direction, Integer type) {super();this.id = id;this.name = name;this.cardNo = cardNo;this.visitorTime = visitorTime;this.direction = direction;this.type = type;}// setter/getter 省略}

批量新增实体类BatchVisitor ,定义集合接收多个对象

package cn.bitqian.entity;import java.util.ArrayList;
import java.util.List;/*** 批量新增 visitorInfo* @author echo lovely**/
public class BatchVisitor {private List<VisitorInfo> visitorList = new ArrayList<>();public List<VisitorInfo> getVisitorList() {return visitorList;}public void setVisitorList(List<VisitorInfo> visitorList) {this.visitorList = visitorList;}public BatchVisitor() {}}

controller方法,放实体类,实体类里面套VisitorInfo的集合

	@RequestMapping(value="/batchAdd", method=RequestMethod.POST)@ResponseBodypublic VisitorInfo batchAddVisitor(BatchVisitor batchVisitor) {List<VisitorInfo> visitorList = batchVisitor.getVisitorList();// System.out.println(batchVisitor);for (VisitorInfo visitorInfo : visitorList) {System.out.println(visitorInfo);visitorInfoService.save(visitorInfo);}return new VisitorInfo(1, "dd", "bb", new Date(), 1, 2);}

对于上面响应了对象到页面,会报错,需要导入json的依赖。

	<!-- json 用于响应 responseBody --><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.6</version></dependency>	

接收页面的参数,需要字符串转型为日期,需要
mvc自定义日期转换器
或者加上注解,mvc会将字符串转换为对应格式的日期

响应对象有日期时,解决:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写简单的启动器

starter1. target2. 手写启动器~2.1 自动装配&#xff0c;自定义属性2.2 启动器&#xff0c;引用自动装配模块3. 在自己的项目引用上面的starter1. target 1. 启动器只用来做依赖导入(导入配置模块)2. 专门来写一个自动配置模块3. 启动器依赖自动配置&#xff1b;别人只需要引入…

Android 颜色渲染(九) PorterDuff及Xfermode详解

Android 颜色渲染(九) PorterDuff及Xfermode详解之前已经讲过了除ComposeShader之外Shader的全部子类, 在讲ComposeShader(组合渲染)之前, 由于构造ComposeShader需要 PorterDuffXfermode或者PorterDuff.Mode作为参数,所以在此先详细地了解下这两个类的作用,这对之后的绘图会…

每次新建Android项目都报样式找不到的错误?

问题描述如图再网上找了下说改为<style name"AppBaseTheme" parent"android:Theme.Light">这样就行了的确改为这样就ok了但是如果每次都要这么改&#xff0c;不是很烦&#xff1f;有没有彻底解决这个问题的方法&#xff1f;谢谢 解决方案1新建的时候…

Qt多线程学习:创建多线程

【为什么要用多线程&#xff1f;】 传统的图形用户界面应用程序都仅仅有一个运行线程&#xff0c;而且一次仅仅运行一个操作。假设用户从用户界面中调用一个比較耗时的操作&#xff0c;当该操作正在运行时&#xff0c;用户界面一般会冻结而不再响应。这个问题能够用事件处理和多…

图解springmvc 执行流程

核心对象 DispatcherServlet 核心控制器负责请求&#xff0c;响应&#xff0c;数据的分发。HandlerMapping 处理器映射器&#xff0c;负责到controller中&#xff0c;找到对应的方法&#xff0c;返回给核心控制器。HandleAdapter 处理适配器&#xff0c;将handle找到的方法执行…

VMware下Windows Server 2012添加新磁盘

系统管理员在VM下新装了一台Windows Server 2012服务器&#xff0c;我在上面安装了SQL Server 2014 Standard版数据库&#xff0c;安装之初&#xff0c;只分配了一个C盘&#xff0c;我想在这台服务器上添加了三个磁盘&#xff08;虚拟磁盘&#xff09;&#xff0c;步骤如下截图…

mybatis Caused by: java.io.IOException: Could not find resource xxx.xml

翻译&#xff1a;找不到mybatis的映射配置文件。。。 配置文件名别写错了… <!-- 扫描mapper --> <mappers><!-- src/main/resources下 使用\ --><!-- <mapper resource"cn\bitqian\mapper\ordersMapper.xml"/> --><!-- src/mai…

mybatis新增返回主键值

mapper <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"cn.bitqian.dao.OrdersMa…

测试===JUnit单元测试

测试一&#xff0c;测试分类二&#xff0c;单元测试Junit&#xff0c;你以为的junit只是Test注解吗&#xff0c;shallow..优点&#xff1a;规范&#xff1a;断言&#xff1a;案例demo&#xff1a;junit test case测试类创建&#xff0c;执行测试&#xff0c;结果反馈junit test…

iOS IAP教程

1. 创建应用首先进入iTunes Connect然后按下 Manage Your Applications接下来按下Add New Applicationbutton创建应用2. 在应用中创建IAP创建应用之后&#xff0c;在Manage Your Applications中点应用的图示&#xff0c;进入应用就会看到上图画面点击Manage In App Purchases就…

mybatis-plus 使用乐观锁修改

title乐观锁与悲观锁解决方案code测试乐观锁与悲观锁 乐观锁&#xff1a;十分乐观&#xff0c;总是认为不会出现问题&#xff0c;无论干什么&#xff0c;都不会去上锁。如果出现了问题&#xff0c;就再次更新值测试。 悲观锁&#xff1a;十分悲观&#xff0c;认为总是出现问题…

EasyUI 在aspx页面显示高度不正常解决办法

<body class"easyui-layout"><form id"form1" runat"server"><table id"dg" class"easyui-datagrid"></table></form> </body> </html>这样写的时候&#xff0c;datagrid显示就不…

WPF中的动画——(四)缓动函数

缓动函数可以通过一系列公式模拟一些物理效果&#xff0c;如实地弹跳或其行为如同在弹簧上一样。它们一般应用在From/To/By动画上&#xff0c;可以使得其动画更加平滑。 var widthAnimation new DoubleAnimation() { From 0, To 320, Duration Tim…

mybatis-plus 查询,删除

title查询 单值&#xff0c;多个主键&#xff0c;条件分页查询物理删除&#xff0c;逻辑删除mybatis-plus 新增&#xff0c;修改查询 单值&#xff0c;多个主键&#xff0c;条件 Testvoid queryOne() {// 查询单个userUser user userMapper.selectById(1);System.out.println(…