2014-11-04 2 views
3

У меня есть HTML-файл, как это:Объявление глобальной переменной в Java скриптлетах

<html> 
<body> 
<% int i=1; %> 
<span name="page2"></span> 
</body> 
</html> 

и размаху page2 указанного выше файла я вставил новую страницу, как это:

<html> 
<body> 
<% if(i=1) { %> 
<p>1</p> 
<% } 
else { %> 
<p>2</p> 
<% } %> 
</body> 
</html> 

I Я работаю в фабрике портлетов Websphere, чтобы вставить вторую страницу на первую страницу.

Проблема заключается в переменной «я» во втором файле не может быть решена ..

ответ

1

Каждый файл JSP индивидуально составленный в server. когда второй файл скомпилирован, он не знает объявления int i.

По умолчанию он хранится в page объеме,

страница сфера означает, объект JSP может быть получен только в пределах той же странице, где она была создана

Вы можете скорее установить его,

application.setAttribute("globalVar", i); 

в области применения для доступа к нему через приложение

+0

, когда я делаю это, переменная i становится глобальной ..? –

+1

Да, к нему можно получить доступ через приложение –

+0

, все еще та же проблема возникает даже после объявления i как глобального var. –

1

Все, что вы пишете внутри scriplet, станет содержанием сервисного метода Servlet.

Так

<% int i=1; %> 

будет

public void service(request,response){ 
    int i=0 

} 

Вы можете использовать JSTL тегов, потому что это лучшая практика, чтобы избежать использования scriplets

<c:set var="i" value="1" scope="request/session/application"/> 

весь Ваш пример без использования сценария становится например

<!--You have to import JSTL libraries--> 
html> 
<body> 
<c:set var="i" value="1" scope="application"/> 
<span name="page2"></span> 
</body> 
</html> 

Доступ к нему в другой JSP.

<html> 
<body> 
<!-- Expression language--> 
<p> ${applicationScope.i eq 1?1:2} </p> 
</body> 
</html> 
+0

, если я объявляю« я », как это, я могу получить доступ к значению« i »из скриптлета. –

+1

Для доступа вам просто нужно вы используете область, которую вы используете. Например, $ {requestScope.i} или $ {sessionScope.i} И вам следует избегать использования сценариев. Никогда не записывайте Java-код в JSP. –