0

以下代码我面临一个问题,

下面的代码工作正常,当我将调试指针放在该位置时,但如果我尝试在没有调试指针的情况下执行,它无法正确读取,所以我没有得到确切的值。所以这会将最后保存的值带到这个地方..有任何同步相关的问题吗?我想要一个解决方案是这条线应该在执行时工作,就像它在调试时的工作方式一样?

    if(session.getAttribute("lightingDesc")!=null)
   {
    lightingDesc=(String)session.getAttribute("lightingDesc");
   }

找到了上述问题的根本原因..这是代码:document.strikeoffForm.submit(); window.open('<%= baseURL %>/jsps/makeStrikeOffs/Print.jsp', "printStrikeoff");
它的发生是因为异步调用。问题是我正在这样做.. 1. 提交表单 2. 打开新窗口以显示提交的值。但是在提交表单之前的一段时间,发生了 2 动作。我认为 Ajax 中的解决方案,但我不知道该怎么做。任何帮助将不胜感激。

4

3 回答 3

2

您的应用程序是否使用线程?其他线程可能会将这个值放入会话中。在调试和运行过程中会出现以下情况:

在运行的情况下,该线程可能会在其他线程放入值之前执行,因此无法找到该值。

在调试的情况下,您的 IDE 会停止/阻塞当前线程,因此,其他线程可能有机会放置该值,这可能是您在调试时获得该值的原因。

解决方案之一是使用线程类的 join() 方法,以便该线程可以等到生产者线程放入值。

于 2013-06-12T08:35:35.610 回答
0

从事调试工作不是正当理由。

最可能的原因是您在其他地方attribute value再次设置,那就是在这行代码之后。

于 2013-06-12T08:35:19.400 回答
0

大家好,感谢您的所有投入。这可能不是正确的方法,但到目前为止它工作正常,所以对我有好处。我给出了这样的解决方案:

document.strikeoffForm.submit();           
<%  Thread.sleep(500)%>        
window.open('<%= baseURL %>/jsps/makeStrikeOffs/Print.jsp', "printStrikeoff"); 
于 2013-06-13T08:18:26.177 回答