金曜日, 28 1 月 2005

カテゴリーのURLが…
この記事をクリップ!
このエントリーをはてなブックマークに追加

« Desktop Manager | Main | 昨日のフェレッツ »
日本語のカテゴリーを作ったけどテンプレートで$blogCategory.getCategoryURL()を呼ぶとそのままエンコードされずに日本語がURLに入ってしまう。
これは困った、何か良い方法はないかとblojsom公式のJavadocを見てるとBlogCategory#getEncodedCategoryURL()という目的にピッタリなメソッドが用意されているではないか。
喜び勇んで元のgetCategoryURL()をgetEncodedCategoryURL()に書き換えた。
お、ちゃんと日本語がURLエンコードされてるな…でもちょっとおかしい。
よくみるとhttp://の「:」までもエンコードされhttp%3A//となってるではないか。
これでは日本語がエンコードされていてもリンクとして機能しない、困った。
色々考えた挙げ句、ソースを書き換える事にした。
ソースを追っていくとorg.blojsom.util.BlojsomUtils#urlEncodeForLink(String)でURLエンコードを行っているようだ。
ここを以下のように書き換えた。
--- BlojsomUtils.java.org       2005-01-28 01:38:29.000000000 +0900
+++ BlojsomUtils.java   2005-01-28 01:56:22.000000000 +0900
@@ -788,10 +788,16 @@
         }
 
         try {
+               String prefix="";
+               if(input.startsWith("http://"))
+               {
+                       input=input.substring(7);
+                       prefix="http://";
+               }
             String result = URLEncoder.encode(input, UTF8);
             result = replace(result, "%2F", "/");
             result = replace(result, "%20", "+");
-            return result;
+            return prefix+result;
         } catch (UnsupportedEncodingException e) {
             return input;
         }
コンパイルしたBlojsomUtilsをWEB-INF/classes/org/blojsom/util/に置いて完了。
Tomcatを再起動すると「:」が正常に表示されるようになった。
でもこれって多分バグだと思うし、本家で直してくれないかなぁ。
Posted by tsujitako at 2:40 午前 in Java/blojsom/