[Seasar-user:8146] @RemoveSessionが機能しません
亀田一郎
[E-MAIL ADDRESS DELETED]
2007年 6月 7日 (木) 10:56:49 JST
小林さん、Interceptorに対するDTOのDIについてはお世話になりました。
Interceptorの問題の時、本件も同時に発生していました。
Interceptorの件が解決しましたので、@RemoveSessionが
機能しない件についてあらためて投稿させて頂きます。
【処理概要(テスト手順)】
1.login2.htmlを表示し、ログインします。
2.メニュー画面に戻ります
3.ログオフボタンが表示されるので、クリックします。
【問題】
・ログオフボタンをクリックすると doLogout()が呼び出されますが、
loginUserDtoは削除されません。
つまり、@RemoveSession(name="loginUserDto")が機能していません。
・本件もS2Container-2.4.10,Teeda-1.0.4では正常に動作しますが、
S2Container-2.4.13,Teeda-1.0.7では@RemoveSessionが機能しません。
【login2.html】
...省略...
<form class="loginForm" method="POST">
<div id="isLoggedin">
<p>ログイン済みです</p>
<input id="doLogout" type="submit" value="ログオフ"/>
</div>
<div id="isNotLoggedin">
<table border="2">
<tr><td class="table_td">ユーザID</td><td><input id="userId"
type="text"/></td></tr>
<tr><td class="table_td">パスワード</td><td><input id="password"
type="password"/></td></tr>
<tr><td colspan="2" align="center">
<input id="doLogin" type="submit" value="ログイン" style="{cursor:hand}"/>
</td></tr>
...省略...
【Login2Page】
package test.web.login2;
...省略(import)...
public class Login2Page {
... 省略(プロパティ、ゲッター、セッター)....
private LoginUserDto loginUserDto; //DtoをDIする
public void setLoginUserDto(LoginUserDto loginUserDto) {
this.loginUserDto = loginUserDto;
}
public String doLogin() {
...省略(ログインチェック、ログイン情報のloginUserDtoへの格納)...
}
@RemoveSession(name="loginUserDto")
public String doLogout() {
System.out.println("#### start doLogout() ####");
return null;
}
}
【LoginUserDto.java】
package test.web.dto;
import org.seasar.framework.container.annotation.tiger.*;
@Component(instance = InstanceType.SESSION)
public class LoginUserDto {
private String userId;
private boolean authed;
...省略(ゲッター、セッター)...
}
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070607/276296d1/attachment.html
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070607/276296d1/attachment-0001.html
-------------- next part --------------
package test.web.dto;
import org.seasar.framework.container.annotation.tiger.*;
@Component(instance = InstanceType.SESSION)
public class LoginUserDto {
private String userId;
private boolean authed;
public String getUserId() { return userId; }
public void setUserId(String userId) { this.userId = userId; }
public boolean isAuthed() { return authed; }
public void setAuthed(boolean authed) { this.authed = authed; }
}
-------------- next part --------------
package test.web.login2;
import javax.servlet.http.HttpSession;
import java.util.*;
import org.seasar.framework.container.annotation.tiger.*;
import org.seasar.framework.aop.annotation.*;
import test.web.dto.*;
public class Login2Page {
private String userId;
private String password;
private boolean loggedin=true;
private String loginMsg = "〓〓〓〓〓〓〓b〓Z〓[〓W";
private LoginUserDto loginUserDto;
public String getUserId() { return userId; }
public void setUserId(String userId) { this.userId = userId; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getLoginMsg() { return loginMsg; }
public void setLoginMsg(String loginMsg) { this.loginMsg = loginMsg; }
public boolean isLoggedin() { return loggedin; }
public boolean getLoggedin() { return loggedin; }
public void setLoggedin(boolean loggedin) { this.loggedin = loggedin; }
public void setLoginUserDto(LoginUserDto loginUserDto) {
this.loginUserDto = loginUserDto;
}
public String doLogin() {
System.out.println("#### start doLogin() ####");
if(userId.equals("user") && password.equals("user")) {
loginUserDto.setAuthed(true);
loginUserDto.setUserId(userId);
loginMsg = "〓〓〓O〓C〓〓〓〓〓〓";
loggedin = true;
return "success";
} else {
loginUserDto.setAuthed(false);
loginMsg = "〓〓〓O〓C〓〓〓〓〓s";
loggedin = false;
return null;
}
}
@RemoveSession(name="loginUserDto")
public String doLogout() {
System.out.println("#### start doLogout() ####");
return null;
}
public String prerender() {
System.out.println("#### start prerender() ####");
if(loginUserDto.isAuthed()) {
loggedin = true;
} else {
loggedin = false;
}
return null;
}
}
Seasar-user メーリングリストの案内