|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjp.terasoluna.fw.web.codelist.DBCodeListLoader
public class DBCodeListLoader
コードリスト情報の初期化をデータベースを用いて行う、
ReloadableCodeListLoader
実装クラスである。
このクラスを用いてコードリストを生成する場合は、
dataSource属性に使用するデータソースを指定したあと、
init-method属性にloadを指定し、load()メソッドを最初に実行する必要がある。
また、本クラスはスレッドセーフではないため、
業務閉塞機能もしくはサーバ閉塞機能等を利用し、
コードリストへの参照が行われない状態にてreload()メソッドを
実行するように閉塞設計を行う必要がある。
スレッドセーフとする場合、コードリスト参照時に排他制御がかかり
性能劣化をもたらす原因となり得るため注意が必要である。
コードリストをデータベースから取得するための SQL は、Bean定義ファイルから 設定する。
Bean定義ファイルの設定例。
データソースをTerasolunaDataSourceとして定義している場合。
<bean id="loader1"
class="jp.terasoluna.fw.web.codelist.DBCodeListLoader"
init-method="load">
<property name="dataSource">
<ref bean="TerasolunaDataSource"/>
</property>
<property name="sql">
<value>SELECT KEY, VALUE FROM CODE_LISTS</value>
</property>
</bean>
コードリストを格納するクラス CodeBean は、属性
id 、 name を持ち、
SELECT 文で指定されたカラムの順番で CodeBean に
格納される。
上記例では、 KEY が id 、
VALUE が name の順番で格納される。
取得されたカラムが2つに満たない場合、例えば上記例で
KEY のみ取得した場合は、 name に
null が格納される。
SELECT 文で取得したカラムが3つ以上であるときは、
3つめ以降のカラムは無視される。
SQL で取得された結果は、サーブレットコンテキストに格納され、
JSP 内において、 Struts の<logic:iterate>
タグの name 属性や、<html:options>タグの
collection 属性をbean名として参照する。
以下は、bean名を "loader1" として、
<html:options> の collection属性に指定
した場合の例である。
<ts:defineCodeList id="loader1" />
…
<html:select property="selectOptions">
<html:options collection="loader1"
labelProperty="name"
property="id"/>
</html:select>
ReloadCodeListAction
を、またコードリストのJSP内での使用方法は、
DefineCodeListTag
と、
WriteCodeCountTag
を参照のこと。
CodeBean
,
ReloadCodeListAction
,
DefineCodeListTag
,
WriteCodeCountTag
コンストラクタの概要 | |
---|---|
DBCodeListLoader()
|
メソッドの概要 | |
---|---|
CodeBean[] |
getCodeBeans()
コードリストを取得する。 |
DataSource |
getDataSource()
dataSourceを取得する。 |
String |
getSql()
コードリストを取得するSQLを取得する。 |
void |
load()
コードリストの初期化を行う。 |
protected void |
loadCodeList()
コードリストを読み込む。 |
void |
reload()
コードリストの再読み込みを行う。 |
void |
setDataSource(DataSource dataSource)
dataSourceを設定する。 |
void |
setSql(String sql)
コードリストを取得するSQLを設定する。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public DBCodeListLoader()
メソッドの詳細 |
---|
public void load()
loadCodeList()
を使って既に設定されている
dataSourceと指定されたSQL文を元にコードリストを生成する。
コードリストがすでに存在する場合には、何も行わない。
CodeListLoader
内の load
public void reload()
codeListsの同期を取った上でloadCodeList()
を呼び出す。業務閉塞中の管理者業務にて利用することが望ましい。
ReloadableCodeListLoader
内の reload
protected void loadCodeList()
public CodeBean[] getCodeBeans()
CodeBean
の配列として取得できる。
CodeListLoader
内の getCodeBeans
public DataSource getDataSource()
public void setDataSource(DataSource dataSource)
dataSource
- dataSourceを表すフィールド値。public String getSql()
public void setSql(String sql)
sql
- SQL文
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |