2015-09-30 5 views
1

Я пытаюсь передать переменную между двумя Jsp файлами, но когда я пришел, чтобы использовать их, я получаю сообщение об ошибке, что «сеанс не определен»JSP - сеанс не определен?

Я использую следующее:

Jsp1: 
//following function is called on a button press 
function clickAndClose() 
{ 
    session.setAttribute("test", "some value here"); 

    window.close(); 
} 

Jsp2: 
<!DOCTYPE html> 
<html> 
<body> 
Show Selected RS Number 
    <script language="javascript"> 
     String number = session.getAttribute("test"); 
     session.removeAttribute("test"); 
     document.write(number); 
    </script> 
</body> 
</html> 

То, что я получаю сообщение об ошибке session.setAttribute, смущает меня, поскольку я думал, что сеанс был неявным объектом (включен?)?

Примечание: Я получаю сообщение об ошибке на session.setAttribute("test", "some value");, говоря, что сеанс не определен, НЕ String text = session.getAttribute("test");

+2

'session' действительно является неявным объектом. Лучше показать код, чтобы узнать, что происходит ... – wero

+0

Том Можете ли вы показать jsp –

+0

, если моя память не предает меня, полная подпись - Object getAttribute (String name), не нужно ли вам бросить там? – BigMike

ответ

3

Вы пытаетесь использовать session внутри <script language="javascript"> тег, он не доступен здесь. Используйте его внутри scriptlet или jstl теги.

Javascript выполняется в стороне клиента, в то время как JSP неявные объекты доступны и выполняются в серверной стороне

+0

Ах, я думаю, что здесь я смущаюсь! Спасибо, что помогли, просто подобрав язык, так что все еще разрабатываем изломы! +1 – Tom

0
<%HttpSession sess = request.getSession(true); 
sess.setAttribute("test", "some value");%> 

приведенный выше код даст вам объект сеанса, который требуется. Рекомендуется использовать EL (язык выражений) и теги JSTL. Например, здесь можно использовать EL в

<td><input type="text" value="${test}" /></td> 
+0

первая 'session' - неявный объект. так что не нужно создавать его снова. – Satya

2

Вы не можете получить доступ непосредственно сеанс в JavaScript, ты вы можете обмануть его с чем-то вроде:

<!DOCTYPE html> 
<html> 
<body> 
Show Selected RS Number 
    <script language="javascript"> 
     var number = '<%= session.getAttribute("test") %>'; 
     document.write(number); 
    </script> 
</body> 
</html>