java Struts2如何在不使用struts的情况下重定向到操作。xml?
如果用户未登录,My webserver会阻止用户访问系统,但有些用户可能有多个配置文件,系统只允许用户选择其中一个进行登录,即,一个用户可能是具有某些权限的普通用户,该用户可能会注销并再次使用管理员权限登录,并且可以访问所有内容
出现这种情况时,我会将用户重定向到一个操作,该操作会强制用户选择他/她的个人资料,但服务器不再知道用户试图访问的操作。我可以通过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文件
# 1 楼答案
可以在
struts.xml
文件的result
配置中使用参数。在action类中创建两个属性,它们将保存action和命名空间的名称,并在struts.xml
中使用它们,如下所示:此外,如果您不想创建它们,并且已经在会话中存储了变量,那么也可以使用
#session
表达式从会话中检索它们