2010-02-05 2 views
3

Я пытаюсь выполнить некоторую отладку JSP-файлов, содержащих несколько уровней вложенных включений.Получить имя файла исходного JSP-файла (даже если включено)

например.

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

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

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

Чтобы определить, где определенный файл на самом деле включен я поставил простую линию для вывода предупреждения JavaScript Alert в различных файлах, так что я могу поймать его, когда страница отображается.

например. (Отформатированные на несколько строк для удобства чтения)

<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».

Мне действительно очень хотелось бы не редактировать/hardcode имя файла в каждую строку отладки, которую я добавляю.

У кого-нибудь есть умное решение для получения «истинного» исходного имени файла JSP ... если он включен в другой файл?

+1

Я не уверен в этом, но попробуйте использовать '' –

+0

@Teja - к сожалению, это не имеет никакого значения ... Я думаю, что это просто чистая библиотека тегов «wrapper» для вызова @include – scunliffe

+0

Хорошо, Я попробую, если есть другие варианты. Но существует разница между тем, как эти обе работают, проверьте здесь: http: //www.jguru.com/faq/view.jsp? EID = 13517 –

ответ

2

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

Смежные вопросы