在java scriptlet中声明一个全局变量

时间:2014-11-04 06:06:26

标签: java html scriptlet

我有一个像这样的html文件:

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

并在上面文件的span page2中插入了一个新页面:

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

我在Websphere portlet工厂工作,将第二页插入第一页。

问题是第二个文件中的变量“i”无法解析..

2 个答案:

答案 0 :(得分:3)

您在scriplet中编写的任何内容都将成为Servlet服务方法的内容。

所以

<% int i=1; %>

将是

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

}

您可以使用JSTL标记,因为最好避免使用scriplet

<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>

答案 1 :(得分:1)

每个jsp文件都在server中单独编译。当第二个文件被编译时,它不知道int i的声明。

默认情况下,它存储在page范围

  

页面范围意味着,JSP对象只能从内部访问   它创建的同一页面

你可以设置它,

application.setAttribute( "globalVar", i);

在应用程序范围内通过应用程序访问它