記述方法
Action
@struts-action
- path="/*****"
- パス名:スラなし。他のActionのstruts.action-forwardのparh(遷移先相対パス)に.do付きで指定される。
- name="*****Form"
- フォームに定義するstruts.formのnameと同じ名前:スラなし
- 初期化時など、リクエストから受け取るフォームがない場合は記述不要。
- scope="request"
@struts.action-forward
- name="success"
- 遷移情報の名称:必須。Action#execute()の終了時にActionMappingにセットする。
- path="/*****.do"
- 遷移先パス:必須。
- @struts-actionのpathで指定されたActionパス(スラつき)またはJSP名を指定する。
ActionForm
@struts.form
- name="****Form"
- フォーム自身のあだ名。@struts.actionのnameプロパティに指定される。
XDoclet + Struts 開発の特徴、注意点
- どのタグを書けばどの設定ファイルのどのタグに反映されるのかをある程度理解しておく必要がある。
- DynaActionFormは、struts-config.xmlにメンバを定義することで、Formクラスそのものを作らなくてもよくなる技術だが、XDocletではJavaDocにタグ情報を記述するため、DynaActionFormは使用できない。
- Formを作るのはEclipseのアクセサ自動生成機能があるため、大変な作業ではない。
- 逆にDynaActionFormを使いたいがために、struts-config.xmlにいちいちメンバ情報を書くことの方が面倒くさい。
- DynaActionFormには使用できるプロパティの型に制限がある。
- GUIツールはウィザードに従ってフォームや設定ファイルを自動生成してくれるため、設定ファイルのメンテナンス負荷を軽減する、XDoclet以外の選択肢である。
- ウィザードでひとつひとつ作っていかなければならないことに変わりはない。コーディングミスは減るかもしれないが、類似クラスのコピーペーストという作業はできないので、かえって面倒くさい。
struts-config.xmlの自動生成
<!-- XDocletクラスパスの設定 -->
<path id="class.path">
<!-- XDocletのライブラリ -->
<fileset dir="/xdoclet-1.2.2/lib">
<include name="*.jar"/>
</fileset>
<!-- Strutsのライブラリ -->
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
<!-- Servlet APIのライブラリ-->
<fileset dir="/[[Tomcat]]/common/lib">
<include name="*.jar"/>
</fileset>
</path>
<!-- XDocletの実行 -->
<target name="xdoclet">
<taskdef
name="webdoclet"
classname="xdoclet.modules.web.WebDocletTask"
classpathref="class.path" />
<webdoclet
destdir="${distpath.project}"
excludedtags="@version,@author,@todo"
verbose="true"
force="true">
<!-- 対象ソースの指定 -->
<fileset dir="src">
<include name="**/*.java"/>
</fileset>
<!-- struts-config.xmlの生成 -->
<strutsconfigxml version="1.1" destdir="/projects/tmp"/>
<!-- validation.xmlの生成 -->
<strutsvalidationxml destdir="/projects/tmp"/> </webdoclet>
</target>
validator.xmlの自動生成
方法
まず、フォームビーンのSetterメソッドにstruts.validatorタグを一生懸命書く。
ビルドファイルに<strutsvalidationxml>エレメントを定義すれば、validator.xmlをdestdir配下に作ってくれる。
ビルドファイルに<strutsvalidationxml>エレメントを定義すれば、validator.xmlをdestdir配下に作ってくれる。
注意点
- フォームビーンクラスがValidatorForm(ActionFormのサブクラス)を継承していることが条件。ActionFormにいくらstruts.validatorタグを一生懸命書いても、全部無視される。
- XDocletタグを、よくGetterに書いてしまうミスがある。気をつけよう。
マージファイル
問題点
- build.propertiesをインポートしても、定義してある値が認識されない。インポートのディレクトリ指定が悪くてインポートされていないのか?