Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 获取源JSP文件的文件名(即使包含)_Debugging_Jsp_Filenames_Jspinclude - Fatal编程技术网

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

Debugging 获取源JSP文件的文件名(即使包含),debugging,jsp,filenames,jspinclude,Debugging,Jsp,Filenames,Jspinclude,我正在尝试对包含多个嵌套include级别的JSP文件进行调试 e、 g foo.jsp bar.jsp jsp 为了帮助确定某个文件的实际包含位置,我放置了一个简单的行,以在各种文件中输出javascript警报,以便在呈现页面时捕获它 e、 g.(为便于阅读,在多行上格式化) 警报('正在访问文件:'+ “\n\n编译为:”+ “\n\n请求者:”); 因此,理想情况下,如果我将其注入baz.jsp中,我希望看到的是: 访问文件:baz.jsp 编译为:\u foo\u jsp.jav

我正在尝试对包含多个嵌套include级别的JSP文件进行调试

e、 g

foo.jsp
bar.jsp
jsp
为了帮助确定某个文件的实际包含位置,我放置了一个简单的行,以在各种文件中输出javascript警报,以便在呈现页面时捕获它

e、 g.(为便于阅读,在多行上格式化)


警报('正在访问文件:'+
“\n\n编译为:”+
“\n\n请求者:”);
因此,理想情况下,如果我将其注入
baz.jsp
中,我希望看到的是:

访问文件:baz.jsp

编译为:\u foo\u jsp.java

请求人:foo.jsp

但是,由于
JSP指令是静态的,因此内容在翻译时包含在内,因此所有内容都变成“foo

我真的很想不必在我添加的每个调试行中编辑/硬编码文件名


是否有人有一个聪明的解决方案来获取JSP的“真实”源文件名。。。如果它@include在另一个文件中?

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

我不确定,但试着使用
@Teja-不幸的是,这没有任何区别。。。我认为这只是调用@includeOk的干净标记库“包装器”,如果还有其他选项,我会尝试。但这两者的工作方式有差异,请检查herehttp://www.jguru.com/faq/view.jsp?EID=13517
@include
是编译时,
是运行时。
foo.jsp
  <%@ include file="bar.jsp"%>

  bar.jsp
    <%@ include file="baz.jsp"%>

    baz.jsp
      <%@ include file="boz.jsp"%>
<script type="text/javascript">
  alert('Accessing File: <%=this.getName()%>' +
    '\n\nCompiled as: <%=pageContext.getPage().getClass().getName()%>' +
    '\n\nRequested by: <%=request.getRequestURI()%>');
</script>