如何隐藏我的网址参数?

时间:2009-11-11 17:09:12

标签: java jsp url portlet

我有几个Portlet,里面有一些链接,我想要的就是隐藏URL参数。所以我认为包含一些jQuery代码很容易,它们为每个构建一个表单并在其上绑定一个click事件来提交表单。

这不起作用。由于某种原因,操作请求未被命中。

是否有人对隐藏网址参数有不同的建议?

3 个答案:

答案 0 :(得分:2)

<a href="#" onclick="JavaScript: handleThisLink();"> description of link </a>
<form name="mydataform" id="mydataform" action="/actionurlonyoursite" method="post">
  <input type="hidden" name="myparam" value="" />
</form>
<script type="text/javascript">
function handleThisLink()
{
    // access the hidden element in which you wish to pass the value of the parameter
    dojo.byId("myparam").value = "myvalue";
    // the value might be precomputed (while generating this page) or 
    // might need to be computed based on other data in the page
    // submit the form by HTTP POST method to the URL which will handle it.
    document.forms['mydataform'].submit();
    // also possible to actually send a background AJAX request and publish
    // the response to some part of the current page, thus avoiding full
    // page refresh
    // I used dojo.byId() as a shortcut to access the input element
    // this is based on dojo toolkit.
}

</script>

答案 1 :(得分:1)

默认情况下链接fire GET个请求。您无法在不通过URL传递参数的情况下触发HTTP GET请求。唯一能做到这一点的是HTTP POST。然后,所有参数都包含在请求正文中。但是您需要通过带有按钮的表单替换所有链接,并且您需要修改服务器端代码,以便它监听POST个请求而不是GET请求以相应地执行操作。

Javascript也可以在XMLHttpRequest的帮助下在“后台”触发GET请求,但是当客户端禁用JS时,您的应用程序将中断或仍然显示参数。此外,客户端可以完全控制JS代码,因此它不一定从客户端“隐藏”参数,而只能从浏览器地址栏中“隐藏”。

答案 2 :(得分:0)

您可以使用XMLHttpRequest来隐藏URL参数或使用servlet容器的会话变量。

也许您可以使用编码网址向最终用户显示复杂数据。

祝你好运