FrontPage > SAStrutsの覚書 > サンプルアプリ

プロパティファイル

先に作成した検索画面のページ制御で、1ページに表示する件数を
外部のプロパティファイルで指定できるようにしてみる。

1. プロパティファイル作成

src/main/resourcesフォルダにsassample.propertiesという名称でファイルを作成する。
キーsearchEmp.limitCountで1ページに表示する件数を指定する。

  • sassample.properties
    searchEmp.limitCount=5

2. プロパティファイル読込み用クラス

プロパティファイル読込み用クラスを作成し、コンポーネントとして登録する。

  • PropertiesUtil.java作成
    package com.ziqoo.sassample.util;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    public class PropertiesUtil {
    
       private Properties props;
    
       public PropertiesUtil(String fileName) throws IOException {
           ClassLoader cl = Thread.currentThread().getContextClassLoader();
           InputStream is = cl.getResourceAsStream(fileName+".properties");
           props = new Properties();
           props.load(is);
       }
    
       public String getString(String key) {
           return props.getProperty(key);
       }
    
       public Integer getInt(String key) {
           return Integer.parseInt(props.getProperty(key));
       }
    }
  • properties.dicon作成
    argタグでプロパティファイルを指定する。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
       "http://www.seasar.org/dtd/components24.dtd">
    <components>
     <component name="propUtil" class="com.ziqoo.sassample.util.PropertiesUtil" instance="singleton" autoBinding="none" >
       <arg>"sassample"</arg>
     </component>
    </components>
  • app.diconファイルでincludeする。
    app.diconに<include path="properties.dicon"/>を追加。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
       "http://www.seasar.org/dtd/components24.dtd">
    <components>
        <include path="convention.dicon"/>
        <include path="aop.dicon"/>
        <include path="j2ee.dicon"/>
        <include path="s2jdbc.dicon"/>
        <include path="properties.dicon"/>
        <component name="actionMessagesThrowsInterceptor" class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
    </components>

3. Actionクラス修正

SearchEmpAction.javaを修正する。

  • フィールド修正
    以下のフィールド
       private static final int LIMIT_COUNT = 5;
    の部分を
       @Resource
       protected PropertiesUtil propUtil;
    に変更する。
  • メソッド修正
    searchEmpメソッドのpageCondition.limitCount設定部分を以下のように修正する。
       private void searchEmp(long page) {
           // 部門選択リスト作成
           searchEmpForm.deptList = deptService.findAllOrderById();
    
           // 検索条件コピー
           SearchEmpCondition condition = Beans.createAndCopy(SearchEmpCondition.class, searchEmpForm).execute();
    
           PageCondition pageCondition = new PageCondition();
           pageCondition.limitCount = propUtil.getInt("searchEmp.limitCount");
    
           pageCondition.page = page;
    
           // 従業員検索
           searchEmpForm.empList = empService.find(condition, pageCondition);
    
           searchEmpForm.totalCount = pageCondition.totalCount;
           searchEmpForm.totalPage = pageCondition.getTotalPage();
           searchEmpForm.page = pageCondition.page;
    
       }

4. 環境によるプロパティファイルの切替

src/main/resources/env.txtの内容により、プロパティファイルが切替るようにする。
現在env.txtの内容は"ct"なのでこれ用のプロパティファイルを作成し、切替わるようにしてみる。

  • プロパティファイルを作成する。
    sassample_test.properties
    searchEmp.limitCount=2
  • properties_ct.diconを作成する。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
       "http://www.seasar.org/dtd/components24.dtd">
    <components>
     <component name="propUtil" class="com.ziqoo.sassample.util.PropertiesUtil" instance="singleton" autoBinding="none" >
       <arg>"sassample_test"</arg>
     </component>
    </components>

これでproperties_ct.diconがincludeされるようになり、このファイルで指定されているプロパティファイルが読み込まれるようになる。

5. 実行結果

sassample06.jpg





添付ファイル: filesassample06.jpg 399件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-01-08 (日) 01:04:35 (2747d)