如果用戶沒有登錄,我的網絡服務器將阻止對系統的訪問,但是一些用戶可能有多個配置文件,系統只允許用戶登錄選擇其中一個配置文件,即用戶可能是一個普通用戶一些權限和這個相同的用戶可以註銷並以管理員權限再次登錄並可以訪問所有內容。Struts2 - 如何在不使用struts.xml的情況下重定向到一個動作?
當這種情況發生時,我將用戶重定向到強制用戶選擇他/她的配置文件的操作,但服務器不再知道用戶嘗試訪問的操作。我能夠通過ActionInvocation檢索這些信息象下面這樣:
public String initFeature() {
final ActionInvocation invocation = ServletActionContext.getActionContext(BaseAction.getRequest())
.getActionInvocation();
final Object action = invocation.getAction();
if (!this.isUserFullyLogged() && !(action instanceof ProfileSelectionAction)) {
final Boolean isPendingProfileSelection = (Boolean) this
.retrieveSessionAttribute(Constants.PENDING_PROFILE_SELECTION);
if (isPendingProfileSelection != null && isPendingProfileSelection.booleanValue()) {
this.saveSessionAttribute("action", action);
this.saveSessionAttribute("namespace", invocation.getProxy().getNamespace());
return Constants.PROFILE_SELECTION;
}
return Action.LOGIN;
}
return Action.SUCCESS;
}
當系統達到的文件選擇動作我有用戶嘗試訪問,並禁止這種行爲,並命名空間,但我不知道我必須做什麼來將系統重定向到這個命名空間和操作,因爲我只使用struts.xml文件的操作結果到目前爲止。
也許這會幫助你:http://struts.apache.org/development/2.x/docs/parameters-in-configuration-results.html。 –
'如何通過使用Convention插件註釋來重定向到一個動作而不使用struts.xml?' - > –
當你想返回時,保持攔截器的狀態,因爲你只保存具有名稱空間的動作名稱你應該從動作映射中構建url。 –