获取源JSP文件的文件名(即使包含)

时间:2010-02-05 14:48:25

标签: debugging jsp filenames jspinclude

我正在尝试对包含多层嵌套包含的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在另一个文件中?

1 个答案:

答案 0 :(得分:2)

<jsp:include>转换为RequestDispatcher.include(..)并在请求时进行评估,而不是静态评估。所以尝试使用它。