Struts 2アクション内からREQUEST_URIにアクセスするにはどうすればよいですか? perl/php/rubyではENV ["REQUEST_URI"]などで簡単に利用できます。 Javaでは、PageContext.getErrorData()。getRequestURI()は私が探しているようですが、悲しいことに、PageContextはアクション内で定義されていないようです。ErrorDocumentリダイレクトによってリクエストがエラー、または後で定義されるためです。前面にはApache(のmod_jk/AJP)指定元のREQUEST_URIをStruts 2の中からどのように得ることができますか?ApacheのErrorDocumentリダイレクトを介して到達したアクション?
特定の例
は、ApacheでのErrorDocument 404の構成を介して到達Tomcatで2アプリストラット。オリジナルリクエストURL(404をトリガー) - -
http://server/totally/bogus/path
- のhttp.conf -
ErrorDocument 404 /struts2app/lookup.action
- Strutsアクション -
:次の詳細
public String bogusUrlLookup() {
HttpServletRequest request = ServletActionContext.getRequest();
// contains /lookup.action as does request.getRequestURI();
String url = RequestUtils.getServletPath(request);
// PageContext is null, so I cannot reach ErrorData from it.
log.info("pageContext="+ServletActionContext.getPageContext());
// Not in the ENV
// Map env = System.getenv();
// Not in the ATTRIBUTES
// request.getAttributeNames()
// Not in HEADER
// request.getHeaderNames()
return ERROR;
}
もう一度必要なのは文字列 "/ totally/bogus/path"ですが、上記のアクションでは私が見つけることができる唯一のURL文字列は "/ st ruts2app/lookup.action "と入力します。私はErrorDocumentに縛られています。なぜなら、完全に/偽の/パスが、アプリケーションの名前空間内にない可能性が高いのは、Apacheが他の非Tomcatリソースを提供しているからです。
いいえ。この文脈ではnullです。 – andynu