gpt4 book ai didi

java - Action 类被调用两次

转载 作者:行者123 更新时间:2023-11-30 08:01:53 27 4
gpt4 key购买 nike

我时常处理过这种情况。在我的 Struts 2 应用程序中,我使用 AJAX 调用将 String 数组发送到 Action 类。我想做的是这样的: page_1.jsp -> Action A -> Action B -> Action C。然而,实际发生的是 page_1.jsp -> Action A -> Action B -> Action C -> Action C,即最后一个 Action 类被调用两次。

page_1.jsp:

<button class="ink-button double-vertical-space all-25 dynamicButton" 
id="finish" disabled> Finish </button>

[...]

$('#finish').click(function(event)
{
var fids = $('input:checkbox').filter(':checked').map(function ()
{
return this.id;
}).get();

$.ajax
({
method: "POST",
url: "A.action",
data: { fids : fids },
traditional: true,
success:
function()
{
// I know that the problem is here.
// Currently I have it like this, so it's understandable
// why action C is getting called 2 times,
// I just don't know how to fix it.
window.location = "C.action";
}
});
});

struts.xml:

<action name="A" class="action.A" method="execute">
<result name="success" type="redirectAction"> B </result>
</action>

<action name="B" class="action.B" method="execute">
<result name="success" type="redirectAction"> C </result>
</action>

<action name="C" class="action.C" method="execute">
<result name="success"> /page_2.jsp </result>
</action>

最佳答案

你正在做一些奇怪的事情。如果你想执行一些操作并转到一个新页面,那么为什么要使用 AJAX 呢?我想不要让用户同时工作:

user runs the AJAX call, then starts working on something else, and in the middle of the unsaved work... PUFFF! The page changes because the AJAX response is come back.

这会很奇怪,非常烦人,并且明显违反了 POLA .

顺便说一句,如果您由于某种我现在无法想象的原因仍然想以 AJAX 方式进行操作,那么您可以通过两种方式进行:

  1. 如果您想绘制 page_2.jsp,就像看起来那样,则返回 dispatcher 结果(或 stream,或json,或者任何不是来自 Action.Bredirect 也不是 redirectAction 的内容),然后是你的 window.location = "C.action"; 将以正确的(非 AJAX)方式调用 Action.C

  2. 如果您想要(但似乎不是您的情况)只需要 URL 来反射(reflect)新操作,请使用 history.pushState()history.replaceState()而不是 window.location()。它们不会触发任何请求,并且 URL 将是新的。

关于java - Action 类被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31792594/

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