金曜日, 28 1 月 2005
| カテゴリーのURLが… |
|
|
日本語のカテゴリーを作ったけどテンプレートで$blogCategory.getCategoryURL()を呼ぶとそのままエンコードされずに日本語がURLに入ってしまう。
これは困った、何か良い方法はないかとblojsom公式のJavadocを見てるとBlogCategory#getEncodedCategoryURL()という目的にピッタリなメソッドが用意されているではないか。
喜び勇んで元のgetCategoryURL()をgetEncodedCategoryURL()に書き換えた。
お、ちゃんと日本語がURLエンコードされてるな…でもちょっとおかしい。
よくみるとhttp://の「:」までもエンコードされhttp%3A//となってるではないか。
これでは日本語がエンコードされていてもリンクとして機能しない、困った。
色々考えた挙げ句、ソースを書き換える事にした。
ソースを追っていくとorg.blojsom.util.BlojsomUtils#urlEncodeForLink(String)でURLエンコードを行っているようだ。
ここを以下のように書き換えた。
Tomcatを再起動すると「:」が正常に表示されるようになった。
でもこれって多分バグだと思うし、本家で直してくれないかなぁ。
これは困った、何か良い方法はないかと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 at 2:40 午前 in Java/blojsom/






