gpt4 book ai didi

javascript - 使用 Struts 1.x 和 AJAX 设置 session 变量

转载 作者:行者123 更新时间:2023-12-02 20:32:33 24 4
gpt4 key购买 nike

我继承了一个使用 Struts 1.2 开发的网站,我需要对其进行一些更新。对于其中一项更新,我需要根据用户单击按钮时从动态创建(使用 struts)下拉框中选择的值来设置 session 变量。我尝试完成此任务的方法是使用按钮的“onclick”属性来调用 JavaScript 函数,该函数利用 AJAX 对 struts Action 类进行异步调用。

我已经成功实现了此解决方案,但是,我遇到了一个偶尔发生的问题。在大多数情况下,当我单击按钮时, session 变量似乎已正确设置。但是,有时 session 变量不会被设置/重置。这个问题的零星性质让我感到困惑。看起来 AJAX 代码块正在被调用和处理(返回 readState = 4 和 status = 200),但是,Java struts 逻辑没有被输入。代码如下。

JavaScript AJAX 函数:

function createTaskOpp() {
var selectedOpp = document.getElementById("oppId");
var url="setTaskSessionOpportunity.do?opp=" + selectedOpp.value;
var ajaxRequest;

try
{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer Browsers
try
{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
// Something went wrong while trying to create our HTTP object. Resubmit the current page.
alert("Browser Error. Error creating Request Object: " + e);
window.location ="taskConfiguration.do";
}
}
}
ajaxRequest.open("GET", url, true);
ajaxRequest.onreadystatechange = function() {

if (ajaxRequest.readyState == 4)
{
if (ajaxRequest.status == 200)
{
window.location ="saveTask.do";
}

else {
window.location ="taskConfiguration.do";
}
}
};
ajaxRequest.send(null); }

Struts 操作:

public class SetTaskSessionOpportunityAction extends Action {
public ActionForward execute( ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
System.out.println("*****************");
System.out.println("In SetTaskOpp AJAX -Beginning");
HttpSession session = request.getSession();
String taskOpp = request.getParameter("opp");
session.setAttribute("task_opportunity", taskOpp);
ActionForward actionForward = new ActionForward("/viewTask.jsp");
return actionForward;
}

}

感谢您的帮助!-乔什

最佳答案

问题已解决。事实证明,这是 AJAX 请求的浏览器缓存问题。 IE(我的测试环境)自动缓存AJAX请求。我通过添加以下代码行纠正了该问题:

response.setHeader("Cache-Control", "no-cache"); 

关于javascript - 使用 Struts 1.x 和 AJAX 设置 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com