$post跳转新页面并将前一个页面form内容带入(解决More than the maximum number of request)

本文介绍了一种解决因页面元素过多导致GET请求参数超过限制的方法。通过使用POST方式提交数据到Redis,再以GET方式携带Redis的key值,实现页面间的数据传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前做一个功能,需要将一个的页面的元素值带到新打开的页面中,此时数据未入库不存在跳转时根据唯一标识数据库查取,所以当时就简单的使用了get方式。现下出现了问题,当页面元素太多时就报了异常:More than the maximum number of request parameters
解决方案
1.可修改容器配置(一般不建议修改默认配置,所以用了方案2)
2.前台用$.post()提交,此处URL使用post提交,后台接受后将整个对象存Redis;方法体内URL使用get方式提交,传刚刚的Redis的key值,后台方法接受后按key值取对象后给新页面对应字面赋值

  • 前台js方法
<a href="javaScript:show('/url1.action');">页面跳转</a>

show:function(){
	//数据
	var data = $("#formId").serialize();
	$.ajaxSetup({
	//同步执行,保证数据传递
		async:false;
	});
	$.post(url,data,function(data){
		window.open("/url2.action?key"+data);
	});
}
  • 后台controller.java方法
@RequstMapping(value="/url1.action",method="RequstMetfod.POST")
@ResponseBody
public String function1(Dto dto){
	//随机生成作为Redis的key
	String key = UUID.randomUUID().toString();
	//前台数据先存入Redis,时间60s
	RedisUtil.setString(key,JSONUtil.toJSONString(dto),60);
	return key;
}
@RequstMapping(value="/url2.action",method="RequstMetfod.GET")
@ResponseBody
public ModelAndView function1(HttpSevletRequst request){
	String key = request.getParameter("key");
	//根据key值获取之前存的并转化为dto
	String dtoString = RedisUtil.getString(key);
	Dto dto = JSON.parseObject(dtoString,Dto.class);
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值