|
Validateのやり方でも書きましたが、Struts1.0にはValidateをする仕組みがFormBean?に組み込まれていました。しかし、Struts1.1になってからDynaActionForm?を使うことが増えましたが、DynaActionForm?では今までのやり方は使えません*1。DynaActionForm?でFormでValidateを行うには、このStrutsValidator?機能を使うみたいです。これはソースコードにチェックロジックを記述するのではなくて、設定ファイル(validation.xml)と、ルールファイル(validator-rules.xml)を用いてチェック機能を実装するというものです。これを使うことによって
などのメリットがありそうです。 ここでの目的としてはサンプルとして以前使っていた public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
ActionErrors errors = new ActionErrors();
//入力が空だったら
if (input == null || input.equals("")) {
テキストボックスでエラーが発生した、エラー文言は「キーワードを入力してください」
errors.add("input",new ActionError("errors.required", "キーワードを入力してください"));
}
return errors;
}
と <html:errors property="input"/> をどのように実装するか、を考えたいと思います。 プラグインの記述 †Struts ValidatorはStrutsのプラグインであるためstruts-config.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>
Formのクラスを変更 †DynaActionForm?ではvalidate処理が行われないため、DynaValidatorForm?にFormの内容を変更します。 <form-bean name="searchForm" type="org.apache.struts.action.DynaActionForm"> -><form-bean name="searchForm" type="org.apache.struts.validator.DynaValidatorForm"> validation.xmlにルールを記述 †今回も前回と同様、searchFormのinputプロパティはnullがNGというチェックを実装します。validation.xmlに以下の内容を記述します。 <form-validation>
<formset>
<form name="searchForm">
<field property="input" depends="required">
<arg0 key="キーワードを入力してください" resource="false"/>
</field>
</form>
</formset>
</form-validation>
こんな感じです。requiredはnullチェックするよって意味です。arg0タグは{0}に対応します。resource="false"はkey属性がkey値ではなく、文字列ですよっていう意味です。 アクションマッピングの属性 †Actionタグに、valideteする旨の validate="true" エラー時の遷移先 input="kino.tiles.javaDocumentSearch" <-tilesの値も書ける が記述されていることを念のため確認しましょう。 基本的にはこれでValidatorが有効になります。あとはエラー表示の記述などです。 エラーのIDと、ApplicationResources?.propertiesのキーの指定、{0}の置換 †まだよくわかってないんですが
ですが、
みたいですね。 でもそうだとすると、テキストボックスが複数あって、すべてに値が入ってなかった場合にNGとしたい場合<html:errors property="xxxxx"/>は何を書けばよいんでしょうね。だれか、おしえてっ。。 JavaScript?で検証する †Validatorの目玉としてJavaScript?検証があります。 <html:javascript formName="searchForm"/> をどこかに記述してFormを <html:form action="/searchSearch" focus="input" >
-> <html:form action="/searchSearch" focus="input"
onsubmit="return validateSearchForm(this);">
とすると完成です。空文字でリクエストすると、アラートが表示されました。 TIPS集 †<msg name="required" key="errors.userid.null" /> とすると、ApplicationResources?.propertiesのキー値を変えることができます。この例では errors.required -> errors.userid.null に変更しています。 <form name="passwordForm">
<field property="userid" depends="required">
<msg name="required" key="errors.userid.null" />
</field>
</form>
こんな感じですね。 関連リンク †このサイトを参考に書いています。 この記事は
現在のアクセス:42712 |