最近、久々にASP.NETに触ったんですが、
.NETでは「バリデーションのタグ」が「エラーメッセージのタグ」を兼ねる、
という所が便利に思いました。
こんな感じの記述。
<asp:TextBox ID="Text1" runat="server" ... /> <asp:RequiredFieldValidator ID="Text1Required" ControlToValidate="Text1" ... /> <asp:RegularExpressionValidator ID="Text1Regexp" ControlToValidate="Text1 ... />
バリデーションエラーが発生した時には、
バリデーションのタグの位置に表示されます。
これは、ASP.NETが、バリデーションの主体を「バリデーション処理(ロジック)」ではなく
「エラーメッセージ(見た目)」に置いている、ということでしょうか。
JavaだとStrutsの頃から、バリデーションは定義に書いて、
エラーメッセージは画面にタグを書いて、、、と当たり前のようにしてきましたが
バリデーションとエラーメッセージのタグを一つにまとめるのも、アリだな、と
今更ながらに思いました。
S2JSF風に記述するなら、こんな感じでしょうか。
<input id="xxx" type="text" m:value="yyyDto.xxx" label="zzz" /> <span m:inject="s:validator" m:binding="lengthValidator" m:maximum="10" m:target="xxx" /> <span m:inject="s:validator" m:binding="xxxValidatorChain" m:target="xxx" /> ... <span m:inject="s:validator" m:binding="calendarValidator" m:target="aaa,bbb,ccc" />
これなら、
<input>の子タグに<span>タグが入っている事をHTMLチェッカーに怒られたり、
<span m:inject="h:message">タグを埋め忘れてエラーが表示されない、なんて事も起きません。
それに、<textarea>の子タグに書いたバリデータが無視される、、、なんて
S2JSFで困った問題も起きないでしょう (^^;