3

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

4

1 回答 1

2

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

于 2010-02-05T19:14:35.073 回答