[Seasar-user:22101] Re: f:urlの挙動についての質問

今田 昇 [E-MAIL ADDRESS DELETED]
2015年 8月 31日 (月) 12:51:04 JST


鈴木さん

こんにちは
今田と申します。

まず、
Seasar Projectにはさまざまなプロダクトがあるので、
何に関する質問なのかは明示されたほうが良いと思います。
バージョンも明記するべきです。
(SAStrutsに関する質問だと思われますが・・・)

仕様を確認するには、
OSSなのでソースを見るのが一番です。
(どこを見ればよいかわからないという場合もあるでしょうが・・・)

sa-struts-1.0.4-sp9
では、

org.seasar.struts.taglibパッケージの
S2Functionsクラスのurlメソッドが該当します。

public static String url(String input) {
    String contextPath = RequestUtil.getRequest().getContextPath();


RequestUtil経由ではありますが、
HttpServletRequestのgetContextPath()メソッドを呼んでいるだけです。

サーブレットコンテナ側ではWEBサーバーのhttp.confの値などは知る由もないので、
サーブレットコンテナ側のコンテキストルートを返しているだけです。

さらに、
挙動が納得できない場合は、

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>test</title>
</head>
<body>
<h1>test</h1>
<p>
${f:url('/js/test.js')}
</p>
<p>
<%=request.getContextPath() %>/js/test.js
</p>
</body>
</html>

のような簡単なJSPを書いて、
urlファンクションが返すコンテキストルートと
HttpServletRequestが返すコンテキストルート
を比較してみると良いと思います。

その場合、
web.xmlで、
jspDirectAccessをfalseにしている場合は、
実験するときだけtrueに変えてください。

無事に解決されることを祈っています。

なお、
コンテキストルートを決め打ちしたくないからurlファンクションがあるわけで、
決め打ちしたいなら、
urlファンクションを使わずにJSPにハードコーディングすればよいのではないでしょうか。

-----Original Message-----
From: seasar-user-bounces @ ml.seasar.org [mailto:seasar-user-bounces @ ml.seasar.org] On Behalf Of head492 @ yahoo.co.jp
Sent: Monday, August 31, 2015 10:48 AM
To: seasar-user @ ml.seasar.org
Subject: [Seasar-user:22100] f:urlの挙動についての質問

鈴木と申します

f:urlの仕様について伺いたいのですが、このタグのコンテキストルートはどこをみて取得しているのでしょうか。
WEBサーバを設けているのですが、APサーバーのURLではなくWEBサーバのhttp.confの値を取得する挙動なのでしょうか。

構成がどうあってもf:urlで取得できるコンテキストルートを決め打ちしたいのですがそういった方法はないのでしょうか。。。
_______________________________________________
Seasar-user mailing list
Seasar-user @ ml.seasar.org
https://ml.seasar.org/mailman/listinfo/seasar-user


Seasar-user メーリングリストの案内