如果LogOff操作类中有任何错误,我希望将请求重定向到Struts2页面。我正在对来自db.jsp的struts操作执行ajax调用,在那里我正在验证会话变量。我希望用户在db.jsp上获得ajax响应,如果会话被验证,否则将重定向到logoff.jsp。
我从db.jsp发出的Ajax调用如下:
$.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页面:
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是:
<action name="startapp" class="com.ge.wd.action.StartAppAction">
<result name= "success" type="json"></result>
<result name="failure">/jsp/LogOffRedirection.jsp</result>
</action>
它不起作用,它应该这样工作吗?或者,在Struts2中,我们还有什么要做的吗?
发布于 2014-12-18 14:48:05
而不是从服务器重定向,这将无法工作,因为您正在使用AJAX进行异步调用。您需要做的是通过发送一个指定要重定向的错误条件的值,从成功方法重定向。在下面的例子中,我将一个"RedirectURL“作为返回的JSON对象的根成员传递。如果它存在,那么您将重定向。
例如..。
$.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”方法中执行此操作。这样,所有异常都将重定向到您希望的页面。
$.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.
}
});
https://stackoverflow.com/questions/27548844
复制相似问题