[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 メーリングリストの案内