springMVC更新自定义列

业务:前端页面ajax传递json字符串传递到后台实现业务逻辑

环境:springmvc+spring+mybatis+freemarker+js+css

          maven+mysql

springmvc配置文件配置支持返回json数据:

配置spring-servlet.xml:

<mvc:annotation-driven>
	<mvc:message-converters>
		<bean class="org.springframework.http.converter.StringHttpMessageConverter">
			<property name="supportedMediaTypes">
				<list>
					<value>text/plain;charset=UTF-8</value>
					<value>text/html;charset=UTF-8</value>
				</list>
			</property>
		</bean>
	    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
			<property name="supportedMediaTypes">
				<list>
					<value>application/json; charset=UTF-8</value>
					<value>application/x-www-form-urlencoded; charset=UTF-8</value>
				</list>
			</property>
		</bean>
	</mvc:message-converters>
</mvc:annotation-driven>

前端ajax格式:

// 请求参数
var params = {
  "customRow"=["solutionName","id","status","budget","metricImpression","metricClick","cpm", "cpc"]
};
$.ajax({
    type: "POST",
    url: "../updateCustomRow.do",
    data: JSON.stringify(params),//响应数据
    contentType: "application/json; charset=utf-8",//响应数据格式
    dataType: "json", // 响应数据类型
    success: function(data) {
        console.log(data);
    },
    error: function(jqXHR) {
        console.log('发生错误:' + jqXHR.status);
    }
});

备注:上诉ajax请求注意data和dataType,contentType

后台接受:

@PostMapping("/updateCustomRow")
public ResponseEntity<BaseResponse> updateSolutionCustomRow(
			@RequestBody
			@Validated
			@NotBlank
					CustomRowUpdateDto customRow, HttpServletRequest request) {
	xxxService.updateSolutionCustomRow(customRow);
	return ResponseEntity.ok(BaseResponse.success());
}

dto:

@Data
public class CustomRowUpdateDto implements Serializable {

	private static final long serialVersionUID = 4825543977191828653L;

	//{"customRow":"[\"solutionName\",\"id\",\"status\",\"budget\",\"metricImpression\",\"metricClick\",\"cpm\",
	// \"cpc\"]"}
	private String customRow;
}

备注:前台定义的json字符串或者对象数组形式,后台用@RequestBody接受,参数用dto封装,属性名跟前端定义的参数名保持一致,否则接受的参数值为null

service层用gson解析上诉得到的json字符串:

/**
	 * 更新自定义列
	 * @param customRow 自定义列JsonArray
	 */
	@Transactional
	public void updateCustomRow(CustomRowUpdateDto customRow) {
		JsonArray customRowJson = null;
		try {
			customRowJson = new JsonParser().parse(customRow.getCustomRow()).getAsJsonArray();
		} catch (JsonSyntaxException e) {
			log.info("updateCustomRow", "自定义列数据有误,exception e={}" + e);
		}
	}

本地postman测试:

{
    "customRow":"[\"solutionName\",\"id\",\"status\",\"budget\",\"metricImpression\",\"metricClick\",\"cpm\"cpc\"]"
}

注意:传递的时json字符串,不要换行,否则后台接受会异常,估计是postman工具的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值