URL でパラメーターを非表示にすることについて同様の問題がありました。私の解決策が何らかの形で役立つことを願っています。唯一の違いは、JSON データを渡す必要があるため、非常に長い URL パラメーターを渡したくなかったことです。秘密情報を通過させたくない問題とは異なります。
そこで、非表示のフォーム フィールドに情報を配置することについて estmatic がコメントで述べたことを実行しました。
<form class='someDynamicForm' method='post' action='@routes.Application.function()'>
<textarea name="jsonHolder" style="display: none">
"Used javascript to insert the data I want in here"
</textarea>
</form>
柔軟性を高めるために、button
送信に a を使用する必要はありません。フォームを送信する準備ができたら、いつでも JavaScript コードを呼び出すことができますdocument.someDynamicForm.submit();
コントローラー側で、次のようにしてテキストエリアの情報を取得できます。
public static Result function() {
DynamicForm dynamicForm = DynamicForm.form().bindFromRequest();
String jsonData = dynamicForm.get("jsonHolder");
return;
}
そして、ルートファイルで次のことを確認してください。
POST /json controllers.Application.function()
ここでの欠点は、ID を秘密にしたいということです。「ハッカー」がしなければならないことは、右クリック -> ページのソースを表示することだけで、隠しテキストフィールドの情報を見ることができます。
Web セッション全体で情報を渡すために私が行った別の解決策は、Play の組み込みSession
http://www.playframework.com/documentation/2.1.x/JavaSessionFlashを使用することです。
そのようなものを使用することを検討しましたか?ユーザーの ID を頻繁に使用するように思われるため、ID 情報をセッション (最終的には Cookie で公開されます) に保存することを検討する必要があるかもしれません。