2009-05-14 35 views

Odpowiedz

15

Cóż ... tak ... w sposób

String __jspName = this.getClass().getSimpleName().replaceAll("_", "."); 

używam JSP nazywa pre.jsp za to, co ja to w górnej części każdej strony JSP w moim webapp:

<%@page import="org.apache.log4j.Logger"%> 
<% 
    String __jspName = this.getClass().getSimpleName().replaceAll("_", "."); 

    Logger log = Logger.getLogger(this.getClass().getName()); 
    log.info("BEGIN JSP "+__jspName); 
%> 
<!-- BEGIN <%=__jspName %> --> 

Plus kładę to na koniec każdego JSP:

<!-- END <%=__jspName %> --><% log.info("END JSP "+__jspName); %> 

który daje mi dziennik consistend. Aby upewnić się, że każda strona JSP jest "poprawna", mam sprawdzić w moim skrypcie kompilacji, który po prostu szuka dwóch ciągów znaków: "/pre.jsp" i `` END <% = __ jspName`.

Uwaga: Istnieje wiele znaków, które są dozwolone w nazwach plików, ale nie w nazwach klas Java. Jeśli ich użyjesz, nazwy twoich klas mogą wyglądać dziwnie. Jeśli to przypadek, proponujemy, aby utworzyć statyczną funkcję pomocnika, który przetwarza nazwy klas do nazw plików i nazwać, tj

String __jspName = MyJspUtils.getFileName(this.getClass()); 

Każdy kompilator JSP ma własne zasady; tutaj jest jeden przykład: http://itdoc.hitachi.co.jp/manuals/3020/30203Y0510e/EY050044.HTM

Kudo przejdź do Marcus Junius Brutus za wskazanie tego.

+0

Tak. to był dokładnie taki przypadek, jaki miałem ... Myślę, że to zrobi – elzapp

+0

. Zauważ, że działa to tylko w Javie 1.5 lub nowszym. W przeciwnym razie zgłasza błąd "Nie można rozwiązać symbolu". –

+0

@ScottChu: W przypadku języka Java 1.4 należy zamiast tego użyć 'getClass(). GetName()'. –

0

Bardziej wygodnym sposobem jest użycie: <% = request.getRequestURI()%>

<% = request.getRequestURI()%> Na przykład, we wszystkich moich plików JSP, zawsze robię umieścić ten wiersz:

Rendering JSP pliku: '<% = request.getRequestURI()%>'

stawia to comented linię HTML do wytopione html. W ten sposób nie można tego zobaczyć w przeglądarce, ale dla celów debugowania zawsze mogę zobaczyć, że robię "Wyświetl źródło".

+1

Ale to pokazuje tylko żądany URI, a nie renderowany jsp, jeśli pochodzi z dołączenia lub renderowany z serwletu – elzapp

0

udało mi się za pomocą JSTL następująco:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
... 
<!-- <c:out value="${pageScope['javax.servlet.jsp.jspPage']}"></c:out> --> 
... 

A teraz powinieneś zobaczyć jak HTML wypowiedzieć nazwę apletu wytwarzanego przez pojemnik do renderowania pliku JSP, która nazwa jest bardzo blisko do Plik źródłowy JSP.

0

To proste kopiuj-wklej rozwiązanie:

<%=this.getClass().getSimpleName().replaceFirst("_jsp","")%> 
Powiązane problemy