Struts 2のVistaモード
2372 ワード
Visitor訪問者パターン定義
あるオブジェクト群の中の各オブジェクトの動作に役立ちます.これらのオブジェクト自体を変えずに、これらのオブジェクトに作用する新しい動作を定義することができます.
Struts 2に対して、Visitor Design Patternはページ検証で多くの開発者に広く使われています.Struts 1では、アクションFormのvalidateメソッドで手動検証(JavaScriptを通じて)またはCommons Validatorの拡張によって検証(配置ファイルproperties)をサポートしていましたが、Struts 2では、validate方法とXWork検査フレームワークによって校正ができます.XWork検証フレームワークは、属性クラスタイプとして定義された検証とコンテンツ検証を使用して、chain検査サブ属性をサポートします.この過程でVisitorモードに使用します.
Struts 2での検証は、クライアント検証とサーバ側検証に分けられます.クライアントでは、通常、フレームワークやいくつかの成熟したJavascriptスクリプトを通してチェックします.サーバー側では、通常検証には3つの方法があります.
1.アクションにおいて、アクションSupportのValidate方法を書き換えることができる.
2.Actionにexecuteと似たような処理ロジックが複数存在する場合、validateXxx()方法(Xxxは異なる処理ロジック名で、例えばvalidateRegist()方法があり、Regist業務ロジックを処理する)を書き換えることができます.
3.アクションに対応するvalidateのxmlファイルを作成します.これは最も一般的な解決策であるはずですが、一つの問題があります.アクションが多い、または一つ以上のPOJOに対応する複数の処理ロジックがあります.これらのxmlファイルはアクションファイルと処理ロジックの増加に応じて増加します.これは明らかに良い現象ではありません.ですから、POJOに対してだけ、対応するvalidate xmlファイルを書くといいです.これはVisitor検査機の機能です.
第三の点について、例を挙げます.
あるオブジェクト群の中の各オブジェクトの動作に役立ちます.これらのオブジェクト自体を変えずに、これらのオブジェクトに作用する新しい動作を定義することができます.
Struts 2に対して、Visitor Design Patternはページ検証で多くの開発者に広く使われています.Struts 1では、アクションFormのvalidateメソッドで手動検証(JavaScriptを通じて)またはCommons Validatorの拡張によって検証(配置ファイルproperties)をサポートしていましたが、Struts 2では、validate方法とXWork検査フレームワークによって校正ができます.XWork検証フレームワークは、属性クラスタイプとして定義された検証とコンテンツ検証を使用して、chain検査サブ属性をサポートします.この過程でVisitorモードに使用します.
Struts 2での検証は、クライアント検証とサーバ側検証に分けられます.クライアントでは、通常、フレームワークやいくつかの成熟したJavascriptスクリプトを通してチェックします.サーバー側では、通常検証には3つの方法があります.
1.アクションにおいて、アクションSupportのValidate方法を書き換えることができる.
2.Actionにexecuteと似たような処理ロジックが複数存在する場合、validateXxx()方法(Xxxは異なる処理ロジック名で、例えばvalidateRegist()方法があり、Regist業務ロジックを処理する)を書き換えることができます.
3.アクションに対応するvalidateのxmlファイルを作成します.これは最も一般的な解決策であるはずですが、一つの問題があります.アクションが多い、または一つ以上のPOJOに対応する複数の処理ロジックがあります.これらのxmlファイルはアクションファイルと処理ロジックの増加に応じて増加します.これは明らかに良い現象ではありません.ですから、POJOに対してだけ、対応するvalidate xmlファイルを書くといいです.これはVisitor検査機の機能です.
第三の点について、例を挙げます.
<validators>
<field name="user">
<field-validator type="visitor">
<param name="context">user</param>
<param name="appendPrefix">true</param>
<message>user </message>
</field-validator>
</field>
</validators>
<validators>
<field name="firstname">
<field-validator type="requiredstring">
<message>required first name</message>
</field-validator>
</field>
<field name="lastname">
<field-validator type="requiredstring">
<message>required last name</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>required age</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">100</param>
<message>age should be between ${min} and ${max}</message>
</field-validator>
</field>
</validators>