Heim > Web-Frontend > js-Tutorial > So implementieren Sie springmvc in Kombination mit der Ajax-Batch-Addition

So implementieren Sie springmvc in Kombination mit der Ajax-Batch-Addition

coldplay.xixi
Freigeben: 2020-11-26 17:38:26
nach vorne
3256 Leute haben es durchsucht

Ajax-Video-Tutorial In der Spalte „Ajax-Video-Tutorial“ wird hauptsächlich die Implementierungsmethode von SpringMVC in Kombination mit der Ajax-Batch-Addition vorgestellt

1.Bedürfnis Zu beachtende Probleme

So implementieren Sie springmvc in Kombination mit der Ajax-Batch-AdditionDatumsverarbeitungsproblem des MVC-Frameworks

@ResponseBodyDas Antwortobjekt ist ein benutzerdefiniertes Objekt und die Antwort ist nicht json

@ResopnseBodyBei der Antwort auf ein benutzerdefiniertes Objekt ist das Datum eine lange TypnummerDer Parameter von Wie definiert man die Enddatenmethode? Mehrere Objekte empfangen? 2. Seitencode

<%@ 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(&#39;click&#39;, &#39;.remove&#39;, 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=&#39;text&#39; name=&#39;visitorList[" + i + "].name&#39;/>" +
								"</td>" +   
								    
								"<td>" +   
								"	<input type=&#39;text&#39; name=&#39;visitorList[" + i + "].cardNo&#39;/>" +
								"</td>" +   
							    
								"<td>" +   
								"	<input type=&#39;date&#39; name=&#39;visitorList[" + i + "].visitorTime&#39;/>" +
								"</td>" +
							
								"<td>" +
								"	<input type=&#39;radio&#39; value=&#39;1&#39; name=&#39;visitorList[" + i + "].direction&#39;/>进入" +
								"	<input type=&#39;radio&#39; value=&#39;2&#39; name=&#39;visitorList[" + i + "].direction&#39;/>离开" +
								"</td>" +					
							
								"<td>" +       
								"	<input type=&#39;radio&#39; value=&#39;1&#39; name=&#39;visitorList[" + i + "].type&#39;/> 内部" +
								"	<input type=&#39;radio&#39; value=&#39;2&#39; name=&#39;visitorList[" + i + "].type&#39;/> 外部" +
								"</td>" +
					
								"<td>" +
								"	<input class=&#39;remove&#39; type=&#39;button&#39; value=&#39;移除&#39;>" +
								"</td>" +										
								
							"</tr>";						
					}
					$("#tbody").append(data_str);
				}
				
				// 把下标减少一 就行了,就是移除了。
				index_val --;
				
				console.log("remove: ", index_val);
			});
			
			$("#add").click(function() {
				
				// 自增1
				index_val ++;
				
				var data_str = 
					"<tr>" +
						"<td>" +
						"	<input type=&#39;text&#39; name=&#39;visitorList[" + index_val + "].name&#39;/>" +
						"</td>" +   
						    
						"<td>" +   
						"	<input type=&#39;text&#39; name=&#39;visitorList[" + index_val + "].cardNo&#39;/>" +
						"</td>" +   
					    
						"<td>" +   
						"	<input type=&#39;date&#39; name=&#39;visitorList[" + index_val + "].visitorTime&#39;/>" +
						"</td>" +
					
						"<td>" +
						"	<input type=&#39;radio&#39; value=&#39;1&#39; name=&#39;visitorList[" + index_val + "].direction&#39;/>进入" +
						"	<input type=&#39;radio&#39; value=&#39;2&#39; name=&#39;visitorList[" + index_val + "].direction&#39;/>离开" +
						"</td>" +					
					
						"<td>" +       
						"	<input type=&#39;radio&#39; value=&#39;1&#39; name=&#39;visitorList[" + index_val + "].type&#39;/> 内部" +
						"	<input type=&#39;radio&#39; value=&#39;2&#39; name=&#39;visitorList[" + index_val + "].type&#39;/> 外部" +
						"</td>" +
			
						"<td>" +
						"	<input class=&#39;remove&#39; type=&#39;button&#39; value=&#39;移除&#39;>" +
						"</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>
Nach dem Login kopieren

js hat schrecklich gelernt ... Er kann entfernt werden, indem ich zuerst alle Zeilen entferne, die Zeilen neu generiert und die zuvor generierten Zeilen mit einer Zeile weniger vergleiche.

3. Der Controller definiert zu empfangende Parameter
  • Fügt die Entitätsklasse BatchVisitor stapelweise hinzu, definiert die Sammlung zum Empfang mehrerer Objekte
  • 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() {}
    
    }
    Nach dem Login kopieren
  • Controller-Methode, fügt die Entitätsklasse ein und legt die Sammlung von VisitorInfo in der Entitätsklasse fest
  • @RequestMapping(value="/batchAdd", method=RequestMethod.POST)
    	@ResponseBody
    	public 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);
    	}
    Nach dem Login kopieren
  • In den oben genannten Fällen reagiert das Objekt auf die Seite, es wird ein Fehler gemeldet und JSON-Abhängigkeiten müssen importiert werden.
  • <!-- 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>
    Nach dem Login kopieren

  • Um die Parameter der Seite zu erhalten, müssen Sie die Zeichenfolge in ein Datum konvertieren. Sie benötigen einen
  • benutzerdefinierten MVC-Datumskonverter oder fügen Anmerkungen hinzu Wenn das Antwortobjekt ein Datum hat, Lösung:

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie springmvc in Kombination mit der Ajax-Batch-Addition. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage