相关文章推荐
英俊的大熊猫  ·  java postMapping 两个参数 ...·  9 小时前    · 
伤情的莴苣  ·  IDEA ...·  3 月前    · 
细心的机器猫  ·  docker 安装 ...·  10 月前    · 
乖乖的小熊猫  ·  java textarea ...·  1 年前    · 

1 需求
将前端选择的jqGrid多行记录作为参数传递至后台,后台通过dto封装对应属性,以List<DTO> 方式接收参数。

2 问题
直接将json数组传递给后台,报415错误,说明前后台参数类型不匹配。

3 解决
查阅资料后,发现是没有设置contentType,修改后的代码如下:

function addItems() {
	// 检查是否选择了数据
	var selectedItems = $("#tableId").jqGrid("selectCheckItems");
	if(!selectedItems.length) {
		messageBox({"message":"请先选择数据", "type":"warn"});
		return false;
	$.ajax({
		url: basePath + "/xxx/addItems",
		type: "POST",
		dataType: "json",
		data: JSON.stringify(selectedItems),
		contentType: "application/json"
	}).done(function (res, st, xhr) {
		if (res.code === 1) {
			$grid.jqGrid("query");
			messageBox({"message":"添加成功", "type":"success"});
		} else {
			messageBox({"message":"添加失败", "type":"error"});
	}).fail(function (error) {
		console.error(error.responseText);
		messageBox({"message":"添加失败", "type": "error"});
	}).always(function () {
		// to do something

后台以List对象接收参数示例代码如下:

@PostMapping(value = "/addItems")
@ResponseBody
public ResponseJson addItems(@RequestBody List<dto> dtos){
	// 业务判断

此时可以正常接收json数组参数。

MyBatisPlus自带了一个代码生成器mybatis-plus-generator,可基于数据库库表,结合模板技术,自动生成程序源码,不过默认情况下,只支持Entity、Mapper、Service、Controller这些层次。如果想生成未预置的代码,如vo对象、前端vue页面以及其他自定义代码等,需要做一些定制和扩展来实现。 从使用角度而言,官方资料介绍得比较简要,要实际使用,仍然需要进行具体的尝试和摸索,包括必要时看下源码怎么处理的,才能发现一些限制和约束,最终理顺。 本文档提供了整体实现思路,具体过程,包括模板的定义、数据的注入、代码的生成,以及遇到的问题和解决方案。 原代码生成组件,默认会在最终生成文件名前,默认附加实体名前缀,例如实体名是User,VO.java.ftl会自动生成UserVO.java,这样没问题。但是对于前端页面,如list.vue,edit.vue,因为是分目录放实体,希望最终文件名不变,而不要附加前缀变成UserList.vue、UserEdit.vue。 需要自定义类,继承于官方,重写outputCustomFile方法,实现上述目的。 < groupId>hu.icellmobilsoft.jaxb</ groupId> < artifactId>openapi-jaxb</ artifactId> < version>1.1.0</ version> </ dependency> 2. openapi-jaxb插件 由于本人在使用vue.js访问后台的时候,json数组数据到后台,意外的出现了不能解析的错误,使用BeanUtils不能设置集合的问题的解决办法!因此记录下来! 2.想要解析vue的ajax的post请求的方法 需要在请求的方法参数上添加@RequestBody Map<String, String> params Map<String, String>... @PostMapping("ccc2") public String getList(@RequestBody TestUser user) { return "success"... public class ProductInfo extends Product implements Serializable { private List<Taste> tasteList; public List<Taste> getTasteList() { return tasteList; public void setTasteList(List<Taste> tast. 1.之前在进行项目开发的过程中,主要的功能开发其实是基于需求文档进行开发的,其实之前在对开发的过程了解中,没有整体掌握对原型的概念,基于原型图的概念开发,其实可以更直观的看出数据的流转,有些事基于需求文档的开发,会吧一些文字用抽象的语言描述出来,在进行开发的过程中需要对抽象语言进行概括和升级,在进行相关的开发过程中,需要将人类语言转为编程语言。 但是基于原型图的开发,后续开发的过程中,主要是针对具体的原型图中某些系统的概念和对应的具体的按钮,整体来说这种开发模式还是非常不错的,在进行这种开发的时候,需要了 import com.aliyun.dysmsapi20170525.models.AddSmsSignRequest; import lombok.Data; import java.util.List; * @author: liziqiang * @description: ReqSendCodeDto * @date: 2021/6/23 7:12 下午 @Data public class AliSmsSignDto { private Integer sig 很明显,这是一个数据,而且里面对象还是key-value形式,那么我们怎么把string字符串转化成集合,从而获取对象呢。因为对象和数组一般无法直接存入某一个字段,而分开来存到一个表的一列或者整个表,那么有的场景显得太过于复杂。JSONObject作为一个中间商,通过for循环,使用里面的getIntValue方法得到最后的key值。尽量不要强制转换, 如果需要JSONobject,可以直接从集合或者字符串转JSONobject。所以经常从数据库的某个字段拿到一个string的数据。 (JSON 格式的数据);而后端可以使用接收一个 DTO 对象。但当需要在一个界面上同时DTO 和附件文件时,这种方式就不行了。,而后端就无法使用注解了。上面的数据如果和文件同时递,需要使用请求头递,并且得使用FormData的append。