会话超时而重新登录后返回之前访问的页面,需要获取参数

晨儿哥1984 发布于 2015/10/10 10:41
阅读 496
收藏 1

@JFinal 你好,想跟你请教个问题:

简单说下场景:

在线支付成功后,自动跳转回了我们网站的支付成功页面,页面上有“查看订单”按钮,地址为:http://xxx/order/view/105,其中105为订单编号,是urlpara

如果此时用户在网站未登录,点击“查看订单”是会跳转到登录页面的,与此同时,我在Interceptor中记录了登录前的访问的url,使得他登录成功后自动回到之前的页面,用的代码:

ai.getActionKey();

但是这个不能获取urlpara,只能获取http://xxx/order/view,而urlpara就没了,请问在Interceptor中如果获取完整的参数??

我这个例子是用的urlparam

如果换成?key=value&key=value的怎么办?

如果这2种参数传递的方式混合使用怎么办?

加载中
0
iehyou
iehyou
那就直接request.getRequestURI()
晨儿哥1984
晨儿哥1984
你这个对
晨儿哥1984
晨儿哥1984
回复 @iehyou : 你这个获取的url不带参数啊,我之前访问的是 http://xxx/order/view/105,意思我要看id为105的订单,你这个和我写的获取的都是http://xxx/order/view/ ,因为105是urlpara这种参,所以我查询订单id没传递就出异常了
iehyou
iehyou
那我就没明白你的意思的了 难道你需要的是request.getHeader("Referer")?
晨儿哥1984
晨儿哥1984
你这个不对
1
JFinal
JFinal

   做一个进一步的说明:

1:urlPara 与问号挂参是两回事,例如: localhost/abc?id=123 这种问号挂参部分不是 urlPara,urlPara 部分是指 actionKey 之后的在 "/" 反斜杠之后与问号挂参前的一部分,例如: localhost/abc/123?id=456,其中的 123 就是 urlPara

2:整体的 urlPara 可以通过 getPara() 来获取,比 getRequestURI 要简单

3:简单来说 urlPara 通过 getPara() 或 getPara(int) 这两个方法来获取。问号挂参与表单参数通过 getPara(String) 来获取,通过参数类型就可以看出,前者是通过位置获取,后者是通过名称获取

晨儿哥1984
晨儿哥1984
还是这样好
0
iehyou
iehyou
getRequest().getQueryString()
0
晨儿哥1984
晨儿哥1984
        //获取当前访问url,包含jfinal的urlpara
        String visitUrl = request.getRequestURI();
        String queryStr = request.getQueryString();
        if (!Strings.isNullOrEmpty(queryStr)) {
            visitUrl += queryStr;
        }
        if (!Strings.isNullOrEmpty(visitUrl)) {
            //去掉访问url中最前面的contextpath
            visitUrl = visitUrl.replace(contextPath, "");
        }




OSCHINA
登录后可查看更多优质内容
返回顶部
顶部