首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ajax调用失败时重定向到LogOff页面

在Ajax调用失败时重定向到LogOff页面
EN

Stack Overflow用户
提问于 2014-12-18 14:28:59
回答 1查看 917关注 0票数 2

如果LogOff操作类中有任何错误,我希望将请求重定向到Struts2页面。我正在对来自db.jsp的struts操作执行ajax调用,在那里我正在验证会话变量。我希望用户在db.jsp上获得ajax响应,如果会话被验证,否则将重定向到logoff.jsp。

我从db.jsp发出的Ajax调用如下:

代码语言:javascript
运行
复制
  $.ajax({
          type : "POST",
          url: "startapp",
          data:{ processDateInput: processDate,secretToken:tokenLocal},
          dataType: "json",
          async: true,
          success: function(result) {
                                var od = JSON.stringify(result); 
                                var obj = JSON.parse(od);
                                var i = 0;
                                console.log(od);
                                }
});

如果验证了会话,我正在验证ere,将响应发送回Ajax,否则从用户从应用程序注销的位置重定向到LogOffRedirection.jsp页面:

代码语言:javascript
运行
复制
    public class StartAppAction extends ActionSupport {

        private static Logger logger = Logger.getLogger(StartAppAction.class
                .getName());

        private static final long serialVersionUID = -367986889632883043L;
        private final static String SUCCESS = "success";
        private final static String FAILURE = "failure";

        // private ProcessDate pd = new ProcessDate();

        private Object od;
        private String processDateInput = null;
        private String secretToken=null;

        public String execute() throws Exception {

            HttpServletRequest request = ServletActionContext.getRequest();
            HttpServletResponse response = ServletActionContext.getResponse();
    try{
                if(null!=request.getSession().getAttribute("sesStrUID") && null!=secretToken){
                    if(!secretToken.trim().equals(request.getSession().getAttribute("sesStrUID").toString().trim())){
                        return FAILURE;

                    }

                   }
               }
               catch (Exception e) {
                   logger.error("Exception in token verification in Pre con action");
               }
        return SUCCESS;
        }
public String getProcessDateInput() {
        return processDateInput;
    }

    public void setProcessDateInput(String processDateInput) {
        this.processDateInput = processDateInput;
    }

    public Object getOd() {
        return od;
    }

    public void setOd(Object od) {
        this.od = od;
    }

    public String getSecretToken() {
        return secretToken;
    }

    public void setSecretToken(String secretToken) {
        this.secretToken = secretToken;
    }

我给出的Struts.xml是:

代码语言:javascript
运行
复制
<action name="startapp" class="com.ge.wd.action.StartAppAction">
            <result name= "success" type="json"></result>
            <result name="failure">/jsp/LogOffRedirection.jsp</result>
        </action>

它不起作用,它应该这样工作吗?或者,在Struts2中,我们还有什么要做的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-18 14:48:05

而不是从服务器重定向,这将无法工作,因为您正在使用AJAX进行异步调用。您需要做的是通过发送一个指定要重定向的错误条件的值,从成功方法重定向。在下面的例子中,我将一个"RedirectURL“作为返回的JSON对象的根成员传递。如果它存在,那么您将重定向。

例如..。

代码语言:javascript
运行
复制
$.ajax({
      type : "POST",
      url: "startapp",
      data:{ processDateInput: processDate,secretToken:tokenLocal},
      dataType: "json",
      async: true,
      success: function(result) {
                            var od = JSON.stringify(result); 
                            var obj = JSON.parse(od);
                            var i = 0;
                            console.log(od);
                            if(obj.redirectUrl){
                                 window.location(obj.redirectUrl);
                            }
      }
});

您还可以通过从服务器抛出异常,在调用的“fail”方法中执行此操作。这样,所有异常都将重定向到您希望的页面。

代码语言:javascript
运行
复制
   $.ajax({
          type : "POST",
          url: "startapp",
          data:{ processDateInput: processDate,secretToken:tokenLocal},
          dataType: "json",
          async: true,
          success: function(result) {
                                var od = JSON.stringify(result); 
                                var obj = JSON.parse(od);
                                var i = 0;
                                console.log(od);
          },
          fail: function(ex) {
              window.location(ExceptionRedirectUrl); //ExceptionRedirectUrl would be a global constant.
          }
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27548844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档