我正在尝试对包含多层嵌套包含的JSP文件进行一些调试。
e.g。
foo.jsp
<%@ include file="bar.jsp"%>
bar.jsp
<%@ include file="baz.jsp"%>
baz.jsp
<%@ include file="boz.jsp"%>
为了帮助确定实际包含某个文件的位置,我放置了一个简单的行来输出各种文件中的javascript警报,这样我就可以在呈现页面时捕获它。
e.g。 (为了便于阅读,格式化为多行)
<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在另一个文件中?
答案 0 :(得分:2)
<jsp:include>
转换为RequestDispatcher.include(..)
并在请求时进行评估,而不是静态评估。所以尝试使用它。