重定向render需要完善一下

菜根乱谭 发布于 2013/08/15 14:37
阅读 297
收藏 1

直接上代码说问题吧。

在RedirectRender中,处理重定向参数的时候,是直接追加的  ?+参数

public void render() {
		if (contextPath != null && url.indexOf("://") == -1)
			url = contextPath + url;
		
		if (withQueryString) {
			String queryString = request.getQueryString();
			if (queryString != null)
				url = url + "?" + queryString;
		}
		
		try {
			response.sendRedirect(url);	// always 302
		} catch (IOException e) {
			throw new RenderException(e);
		}
	}

但是我的程序中在重定向的时候,url本身就带有参数,此时直接拼接就有问题。

redirect("/api/yb/paper?id=" + up.getInt("paper_id"), true);

重定向后的参数就出现问题,变成:

id=22?app_key=57c17v3sh95t00a3

建议做一个简单的处理,当存在?的时候,用&来连接。

加载中
0
JFinal
JFinal
JFinal 1.5 添加了两行代码,完美支持你的需求
菜根乱谭
菜根乱谭
非常好,可以升级到1.5了
0
JFinal
JFinal
这个的确没有考虑到,这种情况应该很少发生,我做下备忘
菜根乱谭
菜根乱谭
这个需求应该太强烈了,特别在拦截器中判断用户是否需要登录的时候,用户没有登录,将重定向登录页,此时需要如此跳转: /login?from=来源网址,登录完再跳回去,我现在只能用referer来处理了
返回顶部
顶部