【发布时间】:2010-02-05 14:48:25
【问题描述】:
我正在尝试对包含多级嵌套包含的 JSP 文件进行一些调试。
例如
foo.jsp
<%@ include file="bar.jsp"%>
bar.jsp
<%@ include file="baz.jsp"%>
baz.jsp
<%@ include file="boz.jsp"%>
为了帮助确定某个文件实际包含在哪里,我放置了一个简单的行来在各种文件中输出 javascript 警报,以便在呈现页面时可以捕获它。
例如(为了便于阅读,格式化为多行)
<script type="text/javascript">
alert('Accessing File: <%=this.getName()%>' +
'\n\nCompiled as: <%=pageContext.getPage().getClass().getName()%>' +
'\n\nRequested by: <%=request.getRequestURI()%>');
</script>
因此,如果我将其注入baz.jsp,理想情况下我想看到的是:
访问文件:baz.jsp
编译为:_foo__jsp.java
请求者:foo.jsp
但是,由于 <%@include%> JSP 指令是静态的 - 内容在翻译时包含在内,因此所有内容都变为“foo”。
我真的非常希望不必在我添加的每个调试行中编辑/硬编码文件名。
有没有人有一个聪明的解决方案来获取 JSP 的“真实”源文件名......如果它被 @included 在另一个文件中?
【问题讨论】:
-
我不确定,但请尝试使用
<jsp:include> -
@Teja - 不幸的是它没有任何区别......我认为这只是调用@include的干净标签库“包装器”
-
好的,如果有其他选择,我会尝试。但是两者的工作方式之间存在差异,请查看这里http://www.jguru.com/faq/view.jsp?EID=13517
-
@include是编译时,<jsp:include>是运行时。
标签: debugging jsp filenames jspinclude