[Seasar-user:13807] Re: [SAStruts]@validate と@validatorに関しまして

Yasuo Higa [E-MAIL ADDRESS DELETED]
2008年 4月 17日 (木) 13:28:16 JST


ひがです。
> 
> 岡内です。
> 
> >ひがです。
> >>
> >> 岡内と申します。
> >> お世話になります。
> 
下記の件、理由も納得できたので実装します。
よろしくお願いします。
> 
> まだ実案件ではなく検証のレベルですが、システムに対するアクセス認証を
> レルム認証ではなく独自に実装して、ログインしたユーザーのロールもセッション
> 上などに
> 持っているものとします。
> 
> この際、持っているロールによってのアクションのメソッド実行の制御を、検証メ
> ソッドを使って
> 実装しようと考えております。
> 
> たとえば次のようになっています。
> 
> @Required
> public String name;
> 
> @Execute(validate="checkRole",input="edit.jsp")
> public String update()
> {
>       ...
>       return "result.jsp";
> }
> 
> public ActionMessages checkRole()
> {
>       ActionMessages messages = new ActionMessages();
>       ... // ロールのチェック
>       return messages;
> }
> 
> ロールを持っていないユーザーがupdateメソッドを実行しようとしたときは
> checkRoleで
> ひっかかりますが、プロパティのnameが空の場合、先に「nameが必須です」と表示
> され、
> nameプロパティに値が入っていると検証メソッドによるチェックが入ります。
> この場合は、バリデータよりも検証メソッドを優先させたいと思っています。
> (逆のケースもあるかもしれません。どちらを優先させるかを明示的に指定できる
> とうれしいです。)
> 
> また検証メソッドを複数指定したいという件ですが、上記に加えて次のような実行
> メソッドと検証メソッドが
> あったとします。
> 
> @Execute(validator=false,validate="validateUpdateAll",input="list.jsp")
> public String updateAll()
> {
>       ...
>       return "list.jsp";
> }
> 
> public ActionMessages validateUpdateAll()
> {
>       ActionMessages messages = new ActionMessages();
>       ... // 複雑な検証
>       return messages;
> }
> 
> validateUpdateAllメソッドは複雑な検証を行うメソッドで、ロールのチェックは行
> わないものとしたいのですが、
> updateAllメソッドはロールによる制御も行いたいとします。
> たとえば次のように指定できるとうれしいです。(checkRoleを先に指定しているの
> で、こちらが先にチェックされる)
> 
> @Execute(validator=false,validate="checkRole,validateUpdateAll",input="list.jsp")
> public String updateAll()
> {
>       ...


Seasar-user メーリングリストの案内