[Seasar-user:20475] Re: Interceptorを用いた際、indexメソッドしかインターセプトしてくれない

Shouta Morimoto [E-MAIL ADDRESS DELETED]
2011年 1月 5日 (水) 01:02:12 JST


小林様

お世話になります、森本です。


お返事ありがとうございます。

> 2 の方は adminAuthInterceptor だけでなく,
> traceInterceptor も適用されていませんね.
> 設定の問題というより,Action の問題かもしれません.
>
> registerConfirm() は public, 非 static,非 final に
> なっていますか?
> public, 非 static,非 final になっているなら
> Action のソースを見せてください.

はい、public, 非 static,非 finalメソッドになっています。
以下にActionのソースを添付します。

一点、上記から試してみたのですがregisterConfirmメソッドとregistメソッド
において、アノテーションを以下のように変更するとインターセプトしてくれる
ようです。

・registerConfirmメソッド
@Execute(input = "index.jsp", validate = "validate_registerConfirm")
↓↓↓
@Execute(validator = false)

・registメソッド
@Execute(input="index.jsp")
↓↓↓
@Execute(validator = false)

変更前の状態だとログイン画面は出ず、画面の項目エラー(入力値なし)となり
画面自体は出力されてしまいます。
アノテーションによってはインターセプトされないということがあるのでしょうか?

=====================================================================================
> package scoreupgolf.action.admin;
> 
> import javax.annotation.Resource;
> 
> import org.apache.struts.action.ActionMessage;
> import org.apache.struts.action.ActionMessages;
> import org.seasar.struts.annotation.ActionForm;
> import org.seasar.struts.annotation.Execute;
> import org.seasar.struts.util.ActionMessagesUtil;
> import org.seasar.struts.util.RequestUtil;
> 
> import scoreupgolf.dto.Role;
> import scoreupgolf.entity.User;
> import scoreupgolf.form.RegistUserForm;
> 
> public class RegistUserAction {
>   @ActionForm
>   @Resource
>   protected RegistUserForm registUserForm;
> 
>   @Execute(validator = false)
>   public String index() {
>     return "index.jsp";
>   }
> 
>   @Execute(input = "index.jsp", validate = "validate_registerConfirm")
>   public String registerConfirm() {
>     return "registerConfirm.jsp";
>   }
> 
>   @Execute(input="index.jsp")
>   public String regist() {
>     User user = new User();
>     user.login_id = registUserForm.login_id;
>     user.family_name = registUserForm.family_name;
>     user.first_name = registUserForm.first_name;
>     user.nickname = registUserForm.nickname;
>     user.email = registUserForm.email;
>     user.password = registUserForm.password;
>     user.role = Role.PLAYER;
> 
>     if (user.regist()) {
>       registUserForm.resetForm();
>       return "registResult.jsp";
>     }
> 
>     ActionMessages errors = new ActionMessages();
>     errors.add("", new ActionMessage("errors.registuser.alreadyregistered"));
>     ActionMessagesUtil.addErrors(RequestUtil.getRequest(), errors);
>     return "index.jsp";
>   }
> 
>   public ActionMessages validate_registerConfirm() {
>     ActionMessages errors = new ActionMessages();
> 
>     if (!registUserForm.password.equals(registUserForm.password2)) {
>       errors.add("rePassword", new ActionMessage(
>           "errors.registuser.notsamepassword"));
>     }
>     return errors;
>   }
> }
=====================================================================================

以上、よろしくお願いいたします。



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