Получить имя файла исходного файла JSP (даже если он включен)

Я пытаюсь выполнить отладку файлов JSP, которые включают несколько уровней вложенных включений.

e.g.

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 в другом файле?


person scunliffe    schedule 05.02.2010    source источник
comment
Я не уверен в этом, но попробуйте использовать <jsp:include>   -  person Teja Kantamneni    schedule 05.02.2010
comment
@Teja - к сожалению, это не имеет никакого значения ... Я думаю, что это просто оболочка чистой библиотеки тегов для вызова @include   -  person scunliffe    schedule 05.02.2010
comment
Хорошо, попробую, есть ли другие варианты. Но есть разница между тем, как они оба работают, проверьте здесь http://www.jguru.com/faq/view.jsp? EID = 13517   -  person Teja Kantamneni    schedule 05.02.2010
comment
@include - время компиляции, <jsp:include> - время выполнения.   -  person BalusC    schedule 07.02.2010


Ответы (1)


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

person Bozho    schedule 05.02.2010