返回上一页并刷新

本文介绍了一种在Web应用中,如何在数据修改保存后,从前端返回并刷新上一个查询页面的方法。通过将查询条件保存在session中,再从前端取出并拼接成URL,实现了修改后直接返回上次查询页面并刷新的功能。

客户需求:在做注入修改之类的操作时,保存成功后,会到列表页时,会直接跳转到默认查询页面,而无法保留上一次的查询条件。洗完修改保存后,能够直接会到上次的查询页。

解决方案:

一开始偷懒,直接保存成功后,使用history.go(-1) 返回上一页。但是这样的话,就无法刷新上一个页面,将修改的结果体现在列表页中。

后面采用了一个优化的方案,答题的思路是,将查询页面的查询条件塞到session中,在进行修改等操作后,需要返回到上一个页面时,从session中将这些条件取出来,拼接成跳转路径,通过location.href方式会到上一页,实现刷新效果。

代码如下:

后台(将查询条件保存到session)

        //将查询参数保存到session
        request.getSession().setAttribute("plBack", "pageNo="+pageBean.getPageNo()+ item.toUrlString());

 

//在item实体中添加toUrlString方法
public String toUrlString() {
        String url = "";
        //父类参数必须使用get方法获取
        if (StringUtils.isNotEmpty(getId())) {
            url += "id=" + getId() + "&";
        }
        //树脂类型参数不可使用isNotEmpty方法
        if (minAmount!=null) {
            url += "minAmount=" + minAmount + "&";
        }
        //Date类型参数需要先进行转换
        if (createDate != null) {
            url += "createDate =" + FastDateFormat.getInstance("yyyy-MM-dd").format(createDate ) + "&";
        }
    
        if(!"".equals(url)){
            url = "&"+url;
            url = url.substring(0,url.length()-1);
        }
        return url;
    }

前端处理(从session将参数取出来,拼接成目标路径)

 var plBack = '${plBack}';
 location.href =  "/path1/action1.htm?" + plBack;

 

### 实现H5页面返回一页刷新 为了实现在HTML5应用中返回到前一个页面的同刷新该页面,可以采用JavaScript来控制浏览器的历史记录以及触发页面重载。具体方法如下: 当用户希望回到之前的页面且强制刷新,可以通过组合`window.history.back()`与特定条件下的页面刷新逻辑达成目标。对于某些场景下简单的回退操作可能不会引起页面更新的问题,可以在调用历史管理API之前先尝试通过编程方式改变URL状态而不实际加载新地址,再执行回退动作。 一种常见做法是在准备离开当前页前往上一页之际,利用`location.replace()`或修改hash值的方式使得浏览器认为已经发生了新的导航事件,从而确保后续的back()能够真正意义上重新请求服务器资源而不是仅仅从缓存读取[^1]。 另外,在特殊情况下比如UC浏览器可能出现返回功能异常的情况,这可能是由于框架内部机制或是浏览器自身的优化策略所引起的。针对这类问题的一个解决思路是增加版本号或者其他唯一标识作为查询字符串附加到链接后面,以此绕过浏览器对相同URL的缓存处理[^2]。 下面给出一段用于实现上述需求的代码片段: ```javascript function goBackAndReload(){ let url = window.location.href; // 添加间戳防止缓存 history.pushState(null, null, `${url}?_t=${new Date().getTime()}`); setTimeout(() => { window.history.back(); }, 0); } ``` 此段脚本首先更改了当前窗口的位置属性以引入变化因子(如间戳),接着立即安排了一个异步任务去执行history.back(), 这样做可以让浏览器感知到一次完整的前进-后退流程,进而达到预期效果。 值得注意的是,这种方法非适用于所有环境,特别是在一些严格遵循同源政策的安全上下文中可能会受到限制;而且不同的移动设备和浏览器之间也可能存在行为差异。因此建议开发者们在实施此类方案前充分考虑兼容性和用户体验因素[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值