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

Yasuo Higa [E-MAIL ADDRESS DELETED]
2008年 5月 15日 (木) 16:40:57 JST


ひがです。
> 
> 岡内です。
> 
> まだ実案件ではなく検証のレベルですが、システムに対するアクセス認証を
> レルム認証ではなく独自に実装して、ログインしたユーザーのロールもセッション
> 上などに
> 持っているものとします。
> 
> この際、持っているロールによってのアクションのメソッド実行の制御を、検証メ
> ソッドを使って
> 実装しようと考えております。
> 
下記の件で、複数のvalidateメソッドとvalidator(アノテーションによる検証)
が指定されていた場合、
validateメソッド1 -> validator -> validateメソッド2
のようになるパターンもあるのかなと思っています。

そのため、検証の順番は、validationOrderという属性を用意し、
@Execute(validate="validate1, validate2",
    validationOrder="validate1, validator, validate2"), ...)
のように指定するようにしたいと思っているのですが、
これで、要件は満たせるでしょうか。

よろしくお願いします。

> たとえば次のようになっています。
> 
> @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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> 
> 


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