Java框架下,按F5刷新,导致了页面全部刷新怎么办

By nottoday at 2016-08-30 • 0人收藏 • 334人看过

Java的SpringMVC框架下,页面局部刷新通过<a>标签进入后台action返回jsp页面的某个div内容替换掉原页面局部。此时地址栏已经改变,变成localhost:8080/project/d/new, 此时若按F5刷新,则会跳转到localhost:8080/project/d/new所返回的页面。请问这个问题该怎么解决,谢谢!

10 个回复 | 最后更新于 2016-08-30
2016-08-30   #1

https://developer.mozilla.org/en-US/docs/Web/API/History_API

使用HTML5的History来操纵历史纪录,并修改地址栏地址即可。

2016-08-30   #2

回复#1 @lincanbin :

谢谢您的回复!可能我表述的不够正确。点击<a>标签后,局部刷新,地址栏改变,这些我觉得都很好。 只是在这之后再按F5刷新后,页面会跳转,而不是再次实现局部刷新。  比如:94cb现在,右侧有话题广场,点击里面的各个标签后,页面会有div被替换掉/还是说整个body都被新页面替换掉了?

2016-08-30   #3

回复#2 @nottoday :

你想拦截然后重写F5事件?

这个JS是目前是不能实现的,刷新是页面以外的功能,JS跑在一个Sandbox,干预不了。

2016-08-30   #4

回复#3 @lincanbin :

谢谢。原来如此,那么,94cb网站后台是用Java写的吗? 在使用pjax时,比如点击话题话题广场里的话题之后,pjax是替换掉整个当前页面的body吗?

2016-08-30   #5

回复#4 @nottoday :

不是,是PHP写的。

Pjax替换的是除了顶部Navigation Bar和底部的Bottom Information之外的部分(也就是中间)。

2016-08-30   #6

回复#5 @lincanbin :

那页面F5刷新时(或者直接键入<a>标签链接时),返回的是是什么页面?

2016-08-30   #7

回复#6 @nottoday :

Pjax请求时HTTP Header会携带一个不一样的字段,这时候服务端检测到这个字段,就返回页面的局部。

如果没检测到这个字段,说明是正常请求,返回页面的全部。

2016-08-30   #8

回复#7 @lincanbin :

试了下,正常刷新是没有X-PAJX字段的(可以让它携带吗?)。此时返回页面的全部,但是和之前的页面并无区别。 

意思是:<a>标签请求的页面和原页面基本相同,如果是局部刷新则将页面的局部插入,若是F5刷新则返回全部页面(因页面基本相同所以,看起来区别不大)?是这样的吗

2016-08-30   #9

回复#8 @nottoday :

对。

总之F5后刷新的内容,服务器端是可以控制的,可以跟异步请求的结果不一样。

2016-08-30   #10

回复#9 @lincanbin :

好的。谢谢。

登录后方可回帖

登 录
信息栏
购买PHP虚拟主机 / VPS

Carbon Forum是一个基于话题的高性能轻型PHP论坛

下载地址:Carbon Forum v5.0.1
QQ群:12607708(QQ我不常上)

donate

手机支付宝扫描上方二维码可向本项目捐款

Loading...