いくつかのリンクを含むポートレットがいくつかありますが、必要なのは URL パラメータを非表示にすることだけです。そのため、それぞれのフォームを作成し、クリック イベントをバインドしてフォームを送信する jQuery コードを含めるのは簡単だと思いました。
これは動作しません。何らかの理由でアクション リクエストがヒットしません。
URL パラメータを非表示にするための別の提案はありますか?
<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>
リンクGET
はデフォルトでリクエストを起動します。GET
URLを介してパラメータを渡さずにHTTPリクエストを起動することはできません。これを実行できるのはHTTPだけPOST
です。その後、すべてのパラメーターがリクエスト本文に含まれます。ただし、すべてのリンクをボタン付きのフォームに置き換える必要があり、サーバー側のコードを変更して、それに応じてアクションを実行するPOST
リクエストではなく、リクエストをリッスンするようにする必要があります。GET
Javascriptは、の助けを借りて「バックグラウンド」でGETリクエストを実行することもできXMLHttpRequest
ますが、クライアントでJSが無効になっている場合、アプリケーションは壊れるか、パラメータを表示し続けます。また、クライアントはJSコードを完全に制御できるため、必ずしもクライアントからパラメーターを「非表示」にする必要はなく、ブラウザーのアドレスバーからのみパラメーターを「非表示」にします。
XMLHttpRequest を使用して URL パラメータを非表示にしたり、サーブレット コンテナのセッション変数を使用したりできます。
エンコード URL を使用して、複雑なデータをエンド ユーザーに表示することができます。
幸運を