Получить имя файла исходного JSP-файла (даже если он включен) - PullRequest
3 голосов
/ 05 февраля 2010

Я пытаюсь выполнить некоторую отладку файлов 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 ... если оно включено в другой файл?

1 Ответ

2 голосов
/ 05 февраля 2010

<jsp:include> переводится в RequestDispatcher.include(..) и оценивается во время запроса, а не статически. Поэтому попробуйте использовать его.

...