2011年12月14日水曜日

ResourceBundleを利用して且つキャッシュを無効にしてpropertiesファイルを読む為の方法

strutsにてwebアプリケーションを開発する際は一般的に以下下記のようなコーディングをして propertiesファイルを読み込みます。
ResourceBundle resource = ResourceBundle.getBundle("hogehoge");
今回行いたいことは、webアプリケーションを再起動する事なくpropertiesファイルを読込たい為、以下のようなロジックを組みました。
ResourceBundle resource = ResourceBundle.getBundle("hogehoge", new NonCacheResourceBundleControl());
  :
  :
    private static class NonCacheResourceBundleControl extends ResourceBundle.Control 
    { 
        @Override
        public long getTimeToLive(String baseName, Locale locale) { 
            // キャッシュは無効. 
            return TTL_DONT_CACHE; 
        } 
    } 
ただのjavaアプリケーションの場合は上記のようなコーディングにてキャッシュを無効にして該当のhogehoge.propertiesを読み込む事ができるのですが、strutsにて呼び出されたjavaアプリケーションの場合、読み込む事が出来ません。なので以下のような引数にClassLoaderを指定する事としました。これによりhogehoge.propertiesをキャッシュ無効にて読み込む事ができるようになります。
// 以下のようにクラスローダーを引数に含めないとpropertiesファイルを取得する事が出来ない。java言語側のバグと考えられる。
  // クラスローダーの指定方法は、
  // http://java.sun.com/javase/ja/6/docs/ja/api/
  // の
  // public static final ResourceBundle getBundle(String baseName)
  // メソッドの説明と同様の指定内容としています。
  // ちなみに 「呼び出し側のクラスローダーを使用して、リソースバンドルを取得」という事を指定しています。
  ResourceBundle resource = ResourceBundle.getBundle("hogehoge", Locale.JAPAN, this.getClass().getClassLoader(), new NonCacheResourceBundleControl());
  :
  :
    private static class NonCacheResourceBundleControl extends ResourceBundle.Control 
    { 
        @Override
        public long getTimeToLive(String baseName, Locale locale) { 
            // キャッシュは無効. 
            return TTL_DONT_CACHE; 
        } 
    } 

2011年4月7日木曜日

ただいま処理中です。しばらくお待ちください...

何か実行ボタンやリンクを押下した際、
"ただいま処理中です。しばらくお待ちください..."
という文字を表示したいケースがあるかと思います。
以下のアドレスにて良い説明がされていましたので
アドレスだけ書いておきます。
http://www.ezms.net/guide/dev/js_study_20051103_001.html#source

2011年4月4日月曜日

css、↑ページトップへ戻る の機能について

<meta http-equiv="X-UA-Compatible" content="IE=8">
の設定をhtmlに施し
<A href="#container">↑ページトップへ戻る</A>
のリンクを設定した場合、なぜか完全にhtmlの一番上まで飛んでくれず
ミリ上部のスクロールが発生する経験はないでしょうか、
今回、この問題への対応方法がわかったので書いておきます。

1.bodyタグの余白を消す。cssを作成
以下の通りです。
body {
 margin: 0;
 padding: 0;
}
2.body直下に全体を括るcontainerのcssを作成。
その時、適宜、padding側を調整して余白を作成。
以下の通りです。
#container {
 margin: 0;
 padding: 6px;
}

3.html側の記述例は以下の通り
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<link rel="stylesheet" type="text/css" href="./menu.css">
</head>
<body>
<!-- container --->
<div id="container">

  <div class="footer">
   <A href="#container">↑ページトップへ戻る</A>
  </div>
 </div>
</div>

</body>

</html>
これで綺麗にページトップへ戻ってくれます。

2011年4月2日土曜日

気ままに書いてみます

気ままに書いてみます。
書くことによって何がおきるのか、心配でもあり楽しみでもあるそんなところですね。