代码之家  ›  专栏  ›  技术社区  ›  scunliffe

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

  •  3
  • scunliffe  · 技术社区  · 15 年前

    我正在尝试调试包含多层嵌套include的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_u jsp.java语言

    请求者: foo.jsp文件

    但是自从 <%@include%> jsp指令是静态的-内容在翻译时包含,因此所有内容都变为“ “。

    我真的非常希望不必在我添加的每一个调试行中编辑/硬编码文件名。

    有没有人有一个聪明的解决方案来获得jsp的“真实”源文件名…如果它包含在另一个文件中?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Bozho    15 年前

    <jsp:include> 翻译成 RequestDispatcher.include(..) 并在请求时进行评估,而不是静态评估。所以试着用它。

    推荐文章