Controller里面的init方法可以进行重写吗,譬如,用户登录之后,我所有其他的action都需要这个用户的信息,那么我想把他放在一个类似的基类里面,所有的action都可以去继承,那么我就想去重写一下init
public class BaseController extends Controller {
private Account loginAccount = null;
public Account getLoginAccount() {
if (loginAccount == null) {
loginAccount = getAttr(LoginService.loginAccountCacheName);
if (loginAccount != null && ! loginAccount.isStatusOk()) {
throw new IllegalStateException("当前用户状态不允许登录,status = " + loginAccount.getStatus());
}
}
return loginAccount;
}
public boolean isLogin() {
return getLoginAccount() != null;
}
public boolean notLogin() {
return !isLogin();
}
/**
* 获取登录账户id,默认已经登录,所以不必判断 null 值
*/
public int getLoginAccountId() {
return getLoginAccount().getId();
}
/**
* 使用 ret.getData() 作为参数,调用父类的 renderJson(Object)
* 考虑添加该特性到 jfinal 2.3
*/
public void renderJson(Ret ret) {
renderJson(ret.getData());
}
}