特集
2004/04/23 17:45 更新


特集:第3回 Strutsをチーム開発に生かす「XDoclet」の活用 (7/8)


 今回のサンプルでは、次のようなマージファイルを用意した。

リスト4■struts-message-resources.xml
<message-resources parameter="resources.application"/>

 Struts設定ファイルを生成する際にマージファイルを取り込む場合は、前述の手順2-b.で定義したタスクにmergedir属性を記述し、マージファイルが格納されているディレクトリを指定する。

5. Validator検証設定ファイル

 Struts設定ファイルにくらべてValidatorの設定ファイルの分割は比較的手軽に使える機能だ。<plugin>要素のValidatorプラグインの設定の箇所に記述する、「pathnames」プロパティの値に設定ファイルのパスをカンマ区切りで並べれば、ファイルを幾つでも使用できるからだ。フォーム単位に分けて設定ファイルを作成するのもよいだろう。

リスト5■Struts設定ファイル、Validatorプラグイン設定個所の記述例
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation-loginform.xml,
/WEB-INF/validation-customerform.xml,
/WEB-INF/validation-managerform.xml
"/>
</plug-in>

 しかし、それでもValidator検証設定ファイルの作成は、手間のかかる作業だ。ActionFormクラスのプロパティを増やしたり、プロパティ名の変更が行われた場合には対応するValidator検証設定ファイルを開き、該当する個所を追記、修正するという作業を要する。その際には、ソースコードと設定ファイルを両方開き、あっちを見たりこっちを見たりしながら作業することが多いのではないだろうか? フォームの入力項目が多い場合などは、これがなかなか大変な作業だ。

 XDocletは、Struts設定ファイルだけでなく、Validatorの検証設定ファイルも生成することができる。Validatorの設定は、フォームのプロパティ単位で行うので、XDocletタグもActionFormクラスのsetterメソッドのJavadocコメントにXDocletタグを記述していく。タグ名、属性名は、生成後のValidator検証設定ファイルの要素名、属性名に対応しているのでValidatorの設定を行ったことがあれば直感的に理解できるはずだ。

fig005.gif

図5■field要素の生成例


 また、Validatorを使うのに必要な<plugin>要素の設定個所にはマージファイルを使うのがよいだろう。

リスト6■struts-plugins.xml
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>

 Validator検証設定ファイルを生成するには、Antビルドファイルの<strutsconfigxml>要素と同じレベルに<strutsvalidationxml>の記述が必要だ。この要素にも、<strutsconfigxml>要素と同様にdestdir属性に生成されるファイルの出力先ディレクトリを指定する。

リスト7■Antビルドファイルの作成例(一部分)
<!-- XDocletの実行 -->
<target name="xdoclet" depends="mkDir">
<!-- XDocletタスクを使用する設定 -->
<taskdef
name="webdoclet"
classname="xdoclet.modules.web.WebDocletTask"
classpathref="class.path"/>
<!-- XDocletの実行 -->
<webdoclet
destdir="${src.dir}"
mergedir="${merge.dir}"
excludedtags="@version,@author,@todo"
force="true"
verbose="true">
<!-- 対象となるソースファイルの指定 -->
<fileset dir="${src.dir}">
<include name="**/*.java"/>
</fileset>
<!-- struts-config.xmlの生成 -->
<strutsconfigxml version="1.1" destdir="app/WEB-INF"/>
<!-- validation.xmlの生成 -->
<strutsvalidationxml destdir="app/WEB-INF"/>
</webdoclet>
</target>

前のページ | 1 2 3 4 5 6 7 8 | 次のページ

[阿島哲夫,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.