我有一个像这样的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”无法解析..
答案 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);
在应用程序范围内通过应用程序访问它