13

Struts で Tiles を使用している場合...

request.getRequestURL()

...たとえば/WEB-INF/jsp/layout/newLayout.jsp、ユーザーが入力/クリックした実際の URL の代わりに、 のようなURL を取得します/context/action.do

新しい Struts バージョン 1.3.x 以降では、javaranchに記載されているソリューションを使用し、 request 属性を使用して実際の URL を取得できますORIGINAL_URI_KEY

しかし、Struts 1.2.x でこれを行う方法は?

4

5 に答える 5

17

私はこれを使用します。これはSpringでも機能します。

<% out.println(request.getAttribute("javax.servlet.forward.request_uri")); %>

クエリ文字列( matchewによる提供)も必要な場合:

<% out.println(request.getAttribute("javax.servlet.forward.query_string")); %>
于 2010-07-21T11:12:01.207 に答える
2

view/jsp/tiles レイヤーから request.getRequestURL() をクエリすると、それはすでに別の書き換えられたリクエストです。

Mwanji Ezana が言及しているように、最も適切な方法は、アクション実行フェーズで別のプロパティに保存することです。Struts2 のインターセプターを使用して、このプロセスを自動化することができます。

于 2010-09-14T18:43:24.587 に答える
1

Struts 1.2.xに同様のグローバル定数があるかどうかはわかりませんが、少なくとも2つの方法で独自のグローバル定数を作成できます。

  • アクションで元のリクエストURLを取得してリクエストに設定し、JSPから呼び出します
  • サーブレットフィルタを使用して同じことを行う
于 2008-09-25T20:10:08.920 に答える
1

これはStruts 1.2で機能します

private String getOriginalUri(HttpServletRequest request) {
    String targetUrl = request.getServletPath();
    if (request.getQueryString() != null) {
        targetUrl += "?" + request.getQueryString();
    }
    return targetUrl;
}
于 2008-10-01T11:04:11.167 に答える