我一直在使用EnumMap的和一個枚舉類型作爲其關鍵實現它。我已經定義了一個枚舉:
public enum NavigationStatus {
HOME,
PROFILE;
}
在會議上,我設置了當前導航爲一體的值:
private NavigationStatus activeUserNavigationStatus;
public NavigationStatus getActiveUserNavigationStatus() {
return activeUserNavigationStatus;
}
public void setActiveUserNavigationStatus(NavigationStatus activeUserNavigationStatus) {
this.activeUserNavigationStatus = activeUserNavigationStatus;
}
主要是我將它設置爲:setActiveUserNavigationStatus(NavigationStatus.HOME);
現在在菜單正在建設我創建一個EnumMap:
EnumMap<NavigationStatus, Component[]> menuMap = new EnumMap<NavigationStatus, Component[]>(NavigationStatus.class);
並添加到它的元素,如:
menuMap.put(NavigationStatus.HOME, new Component[] { homeContainer, home });
而且還上的鏈接點擊的方法我設置的狀態值:
public void onClick() {
session.setActiveUserNavigationStatus(NavigationStatus.PROFILE);
}
最後都是我從會話檢查當前值,並相應設置CSS類:
Component[] menuComponents = menuMap.get(getSession().getActiveUserNavigationStatus());
menuComponents[0].add(new AttributeAppender("class", new Model<Serializable>(" active")));
menuComponents[1].add(new AttributeAppender("class", new Model<Serializable>(" active")));
這是沒有switch語句,並結合JB Nizet's ArrayList索引和Oli Charlesworth's枚舉的想法。
謝謝。