[Seasar-user:14436] Re: [SAStruts] コンテキスト名を含めた絶対パスについて
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2008年 5月 26日 (月) 13:28:44 JST
岡内です。
>> rc3からと思いますが、このリンクをクリックするとURLの末尾に半角スラッシュ
が
>> ついてしまい、
>> パスの階層が変わってしまいます。
>>
>> これをもとに戻すのは難しいでしょうか。
>>
>パラメータの最後には/をつけないように修正したいと思います。
ありがとうございます。
>> また別の解決策として、下記のような機能があればよいのではと考えておりま
す。
>>
>> ・s:linkタグ
>> 例:<s:link action="logout2">ログアウト</s:link>
>> ⇒<a href="/sa-struts-tutorial/logout2">ログアウト</a>
>> s:formと同様に、コンテキスト名を含めた絶対パスが出力させる
>>
>> ・f:url()関数
>> 例:<IMG SRC="${f:url("img/test.jpg")}">
>> ⇒<IMG SRC="/sa-struts-tutorial/img/test.jpg">
>>
>f:url()も用意したいと思います。
ありがとうございます。
ちなみに大したものではありませんが、ためしに作ってみました。
私のイメージということで・・・
//org.seasar.struts.taglib.S2Functions.java
public static String url(String input)
{
String contextName = RequestUtil.getRequest().getContextPath();
StringBuffer url = new StringBuffer();
url.append(contextName);
if(input != null)
{
if(!input.startsWith("/"))
{
url.append("/");
}
url.append(input);
}
return url.toString();
}
結果の例(コンテキストは"sa-struts-tutorial"とした場合)
${f:url("logout")} ⇒ /sa-struts-tutorial/logout
${f:url("/logout")} ⇒ /sa-struts-tutorial/logout
${f:url("add/addTest")} ⇒ /sa-struts-tutorial/add/addTest
(URLエンコーディングは考慮に入れていません。u()を使ってエンコーディングを
試しましたが、
"/"がエンコーディングされてしまうため、だめでした。)
実際に利用する場面ではパラメーターに"/"を入れることが多いと思われるため、
要検討事項と考えています。
s:linkタグのほうは、StrutsのLinkTagをみたところ結構根が深そうなので停滞中で
す。('';
(f:url()があれば、なくてもいいかもしれませんが・・・)
以上
Seasar-user メーリングリストの案内