2013-06-12 3 views
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, но я не знаю, как это сделать. Любая помощь будет принята с благодарностью.

+0

Что он читает неправильно? Позаботьтесь о выводе тоже. –

+0

Точка останова не изменит вывод кода – NimChimpsky

+0

Нам нужно больше узнать о вашем коде. Проблема, вероятно, лежит где-то в другом месте. –

ответ

0

Неправильная работа по отладке.

Самая вероятная причина в другом месте, которое вы снова устанавливаете attribute value, и это после этой строки кода.

+0

tis - это остальная часть кода. Я ничего не установил после этого: <% \t \t \t \t String lightingDesc = ""; System.out.println ("tester1:" + session.getAttribute ("lightingDesc")); \t \t \t \t если (session.getAttribute ("lightingDesc")! = NULL) \t \t \t \t { \t \t \t \t \t lightingDesc = (String) session.getAttribute ("lightingDesc"); \t \t \t \t} \t \t \t %> Освещение:<% = lightingDesc%>

2

Ваше приложение, используя потоки? Возможно, что какой-то другой поток помещает это значение в сеанс. Следующие сценарии возникают во время отладки и запуска:

В случае запуска эта нить может выполняться до того, как другой поток поместит значение, следовательно не сможет найти значение.

В случае отладки ваша IDE останавливает/блокирует текущий поток, поэтому другой поток может получить возможность поместить значение, и это может быть причиной того, что вы получаете значение в случае отладки.

Одним из решений является использование метода join() класса потока, чтобы этот поток мог дождаться, пока поток-производитель поставит значение.

+0

Привет спасибо за ваш ценный вклад ..Found первопричину выше вопрос .. Вот код: \t документ. strikeoffForm.submit(); window.open ('<% = baseURL%>/jsps/makeStrikeOffs/Print.jsp', "printStrikeoff"); Это происходит из-за асинхронного вызова. проблема заключается в том, что я делаю вот так: 1. подача формы 2. открытие нового окна для отображения представленного значения. Но через некоторое время перед отправкой формы произошло 2 действия. Я думаю, что решение в Ajax, но я не знаю, как это сделать. Любая помощь будет принята с благодарностью. –

+0

Вы хотите отобразить значения, которые отправляются? Или результат обработки после отправки формы? –

0

Привет, Все благодарности за все ваши данные. Это может быть неправильный способ, но на данный момент его рабочий тон так хорош для меня .. Я дал решение следующим образом:

document.strikeoffForm.submit();   
<% Thread.sleep(500)%>   
window.open('<%= baseURL %>/jsps/makeStrikeOffs/Print.jsp', "printStrikeoff"); 
Смежные вопросы