[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 メーリングリストの案内