日期:2014-05-18  浏览次数:20647 次

问一个<%@include file="" %>静态包含的问题。在线等,谢谢了。
j1.jsp

<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
j1
</title>
</head>
<body bgcolor="#ffffff">
<%
int a = 0;
%>
<%@include file="j2.jsp" %>
</body>
</html>

j2.jsp

<%@ page contentType="text/html; charset=GBK" %>
<%=i%>

编译时报错

"j1.jsp": cannot find symbol; symbol : variable i, location: class org.apache.jsp.j1_jsp
"j2.jsp": cannot find symbol; symbol : variable i, location: class org.apache.jsp.j2_jsp

请问该如何解决?问题解决马上给分,先谢谢了!

------解决方案--------------------
1,你定义的是a,不是i~~

2,用<jsp:include>
------解决方案--------------------
吧<%=i%>中的i改为a即可
------解决方案--------------------
静态包含就是在编译以前把包含的内容嵌入到当前文件中,然后再进行编译。

错误是i没有定义
------解决方案--------------------
看来楼主没有搞清楚 jsp:include 和 include file的区别:

jsp:include 是 先在各自的页面中处理以后再组合到一块。
include file 是 先把所有代码静态的放在一起在进行统一编译和执行处理。
------解决方案--------------------
Java code
<%@ page contentType="text/html; charset=GBK" %>

------解决方案--------------------
jsp1.jsp
<%!
int i=0;
 %>
<html>
<body>
<%@include file="jsp2.jsp" %>
</body>
</html>

--------------
jsp2.jsp

this is myjsp
<%=i++ %>
------解决方案--------------------
探讨
可是我已经在j1.jsp中定义了i这个变量了阿?

代码我已经改过了

j1.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
j1
</title>
</head>
<body bgcolor="#ffffff">
<%
int i = 0;
%>
<jsp:include page="j2.jsp" flush="true"/>
</body>
</html>


j2.jsp

<%@ page contentType="text/html; charset=GBK" %>

<%=i%>
</html>

但是还是报错啊…

------解决方案--------------------
<%@ page contentType="text/html; charset=GBK" %> 
<%=i%> 
中的i改成a就行,虽然ide会提示错误,但可以正常运行.
不相信可以试试.
如果实在不明白,运行一次页面,可以去这个目录tomcat 5.5\work\Catalina\localhost\....\...看jsp文件生成后的原代码.

------解决方案--------------------
楼主 你的代码我在本机测问题已经解决 代码没有问题 如果你IDE用的是JBuilder的话 你在运行程序的时候把检查JSP页面的那项去掉 就不会报你说的这个错误了 并能顺利运行 具体操作是 选择工程 点右键 选择properties选项 也就是最后一个 然后选择 Build选项 把倒数第二行的 Check JSPs for errors at build-time 这项的勾去掉 就可以了 试试 希望能帮到你 呵呵~
------解决方案--------------------
2.jsp本来就编译不过去吧。
i是没有定义过的。
------解决方案--------------------
把j2.jsp的
“<%@ page contentType="text/html; charset=GBK" %> ”
删除即可。
lz没有搞清楚 <%@ page 与jsp:include的区别。建议查看head first servlet&jsp中文版P401-407页,特别是407页

------解决方案--------------------
17楼和15楼正确的,
------解决方案--------------------