Java 为什么我不是在执行时获取值,而是在调试时获取值?

Java 为什么我不是在执行时获取值,而是在调试时获取值?,java,multithreading,jsp,Java,Multithreading,Jsp,对于以下代码,我面临一个问题 下面的代码可以很好地工作,当我将调试指针放在这个位置上时,但是如果我尝试在没有调试指针的情况下执行,它将无法正确读取,因此无法获得确切的值。所以这会给这个地方带来最后保存的价值。。是否存在与同步化相关的问题? 我想要的解决方案是,这一行应该在执行时工作,就像它在调试时如何工作一样 if(session.getAttribute("lightingDesc")!=null) { lightingDesc=(String)session.getAt

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

下面的代码可以很好地工作,当我将调试指针放在这个位置上时,但是如果我尝试在没有调试指针的情况下执行,它将无法正确读取,因此无法获得确切的值。所以这会给这个地方带来最后保存的价值。。是否存在与同步化相关的问题? 我想要的解决方案是,这一行应该在执行时工作,就像它在调试时如何工作一样

    if(session.getAttribute("lightingDesc")!=null)
   {
    lightingDesc=(String)session.getAttribute("lightingDesc");
   }
找到了上述问题的根本原因。。代码如下:document.strikeoffForm.submit(); open('/jsps/makeStrikeOffs/Print.jsp',“printStrikeoff”)
它的发生是因为异步调用。
问题是我正在这样做。。1.提交表格2。打开新窗口以显示提交的值。但在提交表格前的一段时间,2的动作发生了。我认为解决方案是用Ajax实现的,但我不知道该怎么做。。任何帮助都将不胜感激

在调试中工作不是一个有效的原因


最可能的原因是在其他地方再次设置
属性值,即在这行代码之后。

应用程序是否使用线程?可能有其他线程正在会话中放入此值。调试和运行期间会出现以下情况:

在run的情况下,该线程可能会在另一个线程输入值之前执行,因此无法找到该值

在进行调试时,IDE会停止/阻止当前线程,因此,另一个线程可能会有机会输入该值,这可能是您在进行调试时获得该值的原因


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

您好,谢谢您的所有输入。这可能不是正确的方法,但到目前为止,它的工作很好,所以它对我很好。。我给出了如下解决方案:

document.strikeoffForm.submit();           
<%  Thread.sleep(500)%>        
window.open('<%= baseURL %>/jsps/makeStrikeOffs/Print.jsp', "printStrikeoff"); 
document.strikeoffForm.submit();
open('/jsps/makeStrikeOffs/Print.jsp',“printStrikeoff”);

哪些内容读取不正确?也要注意输出。断点不会改变代码的输出。我们需要查看更多的代码。问题可能出在其他地方。嗨,这是这部分代码的其余部分:从你的问题中不清楚你期望发生什么,实际发生了什么,以及你把断点放在哪个“地方”。这是代码的其余部分。。在此之后我没有设置任何内容:照明:
您好,感谢您的宝贵意见..找到了上述问题的根本原因。。代码如下:document.strikeoffForm.submit();open('/jsps/makeStrikeOffs/Print.jsp',“printStrikeoff”);它的发生是因为异步调用。问题是我正在这样做。。1.提交表格2。打开新窗口以显示提交的值。但在提交表格前的一段时间,2的动作发生了。我认为解决方案是用Ajax实现的,但我不知道该怎么做。。非常感谢您的帮助。是否显示正在提交的值?或提交表格后的处理结果?