私は、ユーザーが使用するアカウントを選択し、その後クリックするすべての URL がそのアカウントを参照する webapp に取り組んでいます。現在、アクティブなアカウントはセッションに保存されていますが、それはユーザーのブックマークに含まれていないことを意味し、ユーザーのセッションがタイムアウトすると失われ、ユーザーがリンクを共有すると関連するアカウントが含まれません...
(かなり大きく、まだ成長している) webapp のすべての URL に手動でaccountID
追加せずに、すべての URL に含める方法はありますか?
1 つのアプローチは、それをパスの最初の部分にすることです。したがって、すべての URL は次のようになります。
- /123/discussions/view.do
- /123/account/edit.do
など、 はどこに123
ありますかaccountID
。
すべてのパスが相対パスであれば、問題なく動作します。しかし、この種のアプローチを Struts 名前空間とうまく連携させる方法がわかりません。
通常、Struts2 taglibs によって生成されるすべてのパスは で始まり、名前空間が一致/
するまでアクション ワイルドカードの一致も開始されません。
名前空間部分の後accountID
のパスでどうにかして取得できれば、アクション ワイルドカードを使用して適切なアクションを実行できると思いますが、最初に URL に ID を取得することが難しい部分です。
<s:a>
最善の解決策は、 、<s:form>
、およびのカスタム バージョンを作成することかもしれません<s:url>
が、それがどれほど簡単かはわかりません。
重要
これらの URL を にマップする方法のみに対処するいくつかの回答がありますAction
。
この問題の難しい部分は、実際にはaccountID
、アプリケーション全体で各 URL に手動で追加することなく、すべての URL とフォーム パスに を取得する方法です。
現在、唯一の方法は、URL とフォーム用の Struts JSP タグのカスタム バージョンを作成することだと思われます。したがって、それを行う方法に関する指針は役に立ちます。