问题描述
开发中,遇到这么一个问题,前端使用的是layuiadmin,当右侧iframe中的内容使用window.open() 打开一个新的页面时,session就失效了,新打开的页面上使用了一个在线office办公插件,当插件保存文档到后台时,从session中获取不到保存的用户信息
问题分析
window.open()打开的一个新页面,页面中的在线office调用方法保存时,实际上是网页内嵌了一个标签实现的,也就是说是一个新的页面
在后台打断点分析了两次进入控制层的sessionId,发现第一次有sessionId,第二次session直接为空的
解决方法
前端使用window.open打开页面的时候,就将所需参数拼接在请求后面,后台接收参数但是不用做处理,然后在页面上获取浏览器地址的参数即可
一下为例子,因为我需要在最后保存文件的时候,保存当前用户的id和机构id,所以我直接在首次调用的时候,就当做参数传递过去
var param = '?title=' + encodeURI(obj.field.title)
+ '&newsType=' + obj.field.newsType
+ '&newsTime=' + encodeURI(obj.field.newsTime)
+ '&sort=' + obj.field.sort
+ '&orgId=${sessionScope.userInfoSession.orgId}'
+ '&createUser=${sessionScope.userInfoSession.id}';
window.open('<%=path%>/newsInfo/saveNoticeOffice.action' + param);