[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);
}
.