【发布时间】:2011-07-08 16:42:59
【问题描述】:
我有一个使用 Freemarker 作为视图组件的 Spring-MVC 应用程序。
在我的模板中,生成了几个指向我的应用程序的链接,其中包括包含哈希键 (#) 的 URL 参数。
例子:
参数:Q#106368 11
Freemarker 使用编码参数生成的 URL:testurl.html?key=Q%23106368%2011
我使用 JavaScript 重定向到这个 URL(原因:我使用 JS 来管理同时加载 2 个帧)。
重定向方法很简单:
function redir(url) {
window.location.href = url;
}
Freemarker 生成的 JS 调用看起来像
<a href="javascript:redir('http://localhost:8080/testappp/testurl.html?key=Q%23106368%2011');">test</a>
我的问题是浏览器/Javascript 转换回 URL 编码参数,认为有一个 # 并在那里切断。
当我直接使用window.location.href='http://...' 时,它可以工作。仅当使用方法参数时,它似乎被神奇地 URL 解码,然后重定向失败,因为 URL 在 # 处被截断。
有没有简单的方法可以正确传递参数?
我知道我可以替换 #,例如在模板中使用$$$hash$$$,然后再次在服务器端进行替换。但是有很多地方我需要改变......
【问题讨论】:
标签: javascript urlencode