Struts1.3.5でValidatorを使う
StrutsではValidate機能が付いている。
Validatorは以下のチェックができる。
- クライアントサイドのエラーチェック
- サーバーサイドのエラーチェック
クライアントサイドではJavascriptを用いてチェックする。クライアントサイドJavascriptチェックを使うと、サーバ間通信が減るので、パフォーマンスを抑えることができる。(多少だと思うけど
サーバーサイドチェックはActionクラス内でチェックする。また、独自のチェックを内部チェックに加えることも可能。
Validatorを使うか使わないかは設定でかえることができる。
インストール
struts-config.xmlに以下を追加。
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/struts/validation.xml"/> </plug-in>
あとはvalidation.xmlを書いてあげる。
サーバーサイドチェックを使う
手順は以下。
- ActionFormを作成
- 作ったフォームにあわせてvalidation.xmlを記入する
- struts-config.xmlからvalidatorを有効にする
struts-config.xmlからvalidatorを有効にする
struts-config.xmlのAction要素でvalidateを有効(true)にする。
<action path="/TestAction" type="com.daipresetns.TestAction" name="TestForm" scope="session" validate="true" input="エラーのときに遷移するページ">
ActionFormでオリジナルのエラーチェックを入れる
ActionFormでvalidate
メソッドをオーバーライドすると、狙ってvalidatorを動かすことができる。StrutsのValidatorはvalidateメソッドが自動的
に呼ばれるということ。オーバーライドして各自実装すれば、validatorで定義されていないチェック(重複チェックなど)を行うことが可能。
@Overridepublic ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = super.validate(mapping,request);
//TODO その他チェックがあればここに記述 if(getPassword() != null){ if(!getPassword().equals(getConfirmPassword())){ //パスワードが異なる errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.9999")); } } return errors;}
Actionで発生したエラーの対処をする
Actionで発生したエラーに対応するエラーメッセージを設定する。
ActionMessages errors = new ActionMessages();errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.0001"));saveErrors(req, errors);
ActionMessageにはリソースのキーを与える。リソースに引数を与える場合は
ActionMessage(key, arg0)
とすればいい。引数は3つまでOKらしい。
メッセージをJSPに表示する
チェックされたエラーはFormにAddされるので、logic:messagesタグやhtml:errorsタグでJSPに表示することができる。
<logic:messagesPresent message="true"> <div class="successmsg"><ul> <html:messages id="msg" message="true"> <li><bean:write name="msg" ignore="true"/></li> </html:messages> </ul></div></logic:messagesPresent> <html:errors />
errorの場合は、以下をリソースに書くことでprefixなどをつけることができる。
errors.header=<ul>errors.fotter=</ul>errors.prefix=<li>errors.sufix=</li>
クライアントサイドチェックを使う
手順は以下。
- ActionFormを作成
- 作ったフォームにあわせてvalidation.xmlを記入する
- JSPにJavascript出力用のタグを記述する
JSPにJavascript出力用のタグを記述する
javascriptを書き込むタグを入れる。form名には表示している画面で利用するフォーム名を記入する。
<html:javascript formName="TestForm"/>
formタグにjavascriptを呼び出すメソッドを記入する。
<html:form action="/TestAction" onsubmit="return validateTestForm(this);">
以上で完了。あとは自動的にvalidation.xmlからチェック用Javascriptを作成してくれる。
I'm a software engineer who like travel to island in Japanese. Recently I am enjoying agile manager, coach, product owner for my work. The person grows like that.











