GWT权限验证:父类的普通方法调用父类抽象方法,而该抽象方法由其子类实现...

[color=red]GWT权限验证:父类BaseActivity继承com.google.gwt.activity.shared.AbstractActivity实现start方法,在start方法中调用一个约束子类的抽象方法showStart方法,从而实现每一次访问都需要进行权限验证,这一点类似filter的思想,代码片段如下:。[/color]



package com.cdl.client.activity;

import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.cdl.client.GreetingServiceAsync;
import com.cdl.client.place.LoginPlace;
import com.cdl.client.util.ForWordString;
import com.cdl.client.util.tool.ClientFactory;
import com.cdl.client.util.tool.LayoutMenuiteComponent;
import com.cdl.client.util.tool.UserTool;
import com.cdl.client.view.compoment.MenuitemComponment;

public abstract class BaseActivity extends AbstractActivity {
protected ClientFactory factory;
protected VerticalPanel contentVerPanel;
private MenuitemComponment navMenu;
private LayoutMenuiteComponent menuiteComponment = UserTool.getLayOutMenuite();

public BaseActivity(ClientFactory factory) {
this.factory = factory;
}

/** 这个start方法主要用来做权限验证,然后再调用startShow方法 */
@Override
public void start(final AcceptsOneWidget panel, final EventBus eventBus) {

GreetingServiceAsync service = UserTool.getGreetingservice();

service.validateAdminLogin(new AsyncCallback<String>() {

@Override
public void onSuccess(String serverResult) {

JSONValue serverVal = JSONParser.parseStrict(serverResult);
JSONObject serverJson = serverVal.isObject();

boolean status = serverJson.get("status").isBoolean().booleanValue();
if (status) {

contentVerPanel = new VerticalPanel();
navMenu = menuiteComponment.getMenuitemComponment();

int type = (int) serverJson.get("type").isNumber().doubleValue();

// 根据管理员类型的不同,在contentVerPanel添加是否包含administration的水平导航菜单
if (type == 1) {
contentVerPanel.add(navMenu.createSuperAdminMenuHPanel());
} else {
contentVerPanel.add(navMenu.createNormalAdminMenuHPanel());
}

//子类实现的父类方法
startShow(panel, eventBus);
} else {
PlaceController placeGo = UserTool.getClientfactory().getPlaceController();
placeGo.goTo(new LoginPlace(ForWordString.LOGINPLACE));
}
}

@Override
public void onFailure(Throwable caught) {
PlaceController placeGo = UserTool.getClientfactory()
.getPlaceController();
placeGo.goTo(new LoginPlace(ForWordString.LOGINPLACE));
}
});
}

/** 用户在start方法中验证权限后进入视图*/
public abstract void startShow(AcceptsOneWidget panel, EventBus eventBus);
}




.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值