读书人

问一个lt;%@include file=quot;quot; %gt;静态包含

发布时间: 2012-01-05 22:36:54 作者: rapoo

问一个<%@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楼正确的,
------解决方案--------------------


应该用 <%@ include file="j2.jsp" %>

include指令元素是将j1和j2页面合并成一个页后,再由Jsp容器进行编译;

而 jsp:include 是将j1 和 j2 页面各自编译,再合并到一起

j2页面就没有定义变量i 自然会报错了 


其实这种问题只要知道它的运行原理,问题是很好找的
找错之前多想想

读书人网 >Java Web开发

热点推荐