之前做一个功能,需要将一个的页面的元素值带到新打开的页面中,此时数据未入库不存在跳转时根据唯一标识数据库查取,所以当时就简单的使用了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);
}