Aware

Webwork in Actionを見てXXXAwareの使い方を知る。


public interface AccountAware{
void setAccount(Account account);
}


public class MainAction extends ActionSupport implements AccountAware{
private Account _account;

public String execute(){
//セット済み
System.out.println(_account);
}

public void setAccount(Account account){
_account = account;
}
}

public class AuthenticationInterceptor implements Interceptor{
public void destroy(){}
public void init(){}

public String intercept(ActionInvocation actionInvocation) throws Exception{
Map session = actionInvocation.getInvocationContext().getSession();
Account account = (Account) session.get(AUTH_KEY);
if(account == null){
return LOGIN;
}else{
Action action = actionInvocation.getAction();
if(action instanceOf AccountAware){
((AccountAware)action).setAccount(account);
}
return actionInvocation.invoke();
}
}
}

なるほど