2009-05-14 24 views

risposta

15

Beh ... sì ... in un modo

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

sto usando un JSP chiamato pre.jsp per ciò che io includo nella parte superiore di ogni JSP nella mia 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 %> --> 

Inoltre ho messo questo alla fine di ogni JSP:

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

questo mi dà un registro consistend. Per assicurarsi che ogni JSP sia "corretto", ho un controllo nel mio script di build che cerca solo le due stringhe "/pre.jsp" e `` END <% = __ jspName`.

Nota: esistono numerosi caratteri consentiti nei nomi di file ma non nei nomi di classi Java. Se li usi, i nomi delle tue classi potrebbero sembrare strani. Se questo è il caso, vi consiglio di creare una funzione di supporto statica che converte i nomi della classe di nomi di file e chiamare tale, vale a dire

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

Ogni compilatore JSP ha le sue regole; ecco un esempio: http://itdoc.hitachi.co.jp/manuals/3020/30203Y0510e/EY050044.HTM

I festeggiamenti vanno a Marcus Junius Brutus per indicarlo.

+0

Già. quello era esattamente il caso d'uso che avevo ... Suppongo che lo farà – elzapp

+0

Si noti che questo funziona solo per Java 1.5 o successivo. In caso contrario, segnala l'errore "Impossibile risolvere il simbolo" –

+0

@ScottChu: per Java 1.4, utilizzare invece 'getClass(). GetName()'. –

0

Il modo più conveniente è quello di utilizzare: <% = request.getRequestURI()%>

<% = request.getRequestURI()%> Per esempio, in tutti i miei file jsp, faccio sempre mettere questa riga:

renderizzazione dei file JSP: '<% = request.getRequestURI()%>'

questo pone una linea di codice HTML commentato per il rendering HTML. In questo modo non si può vederlo nel browser, ma per scopi di debug, posso sempre vederlo inf. "Visualizza sorgente".

+1

Ma questo mostra solo l'URI richiesto, non il jsp reso, se proviene da una inclusione o il rendering da un servlet – elzapp

0

sono riuscito usando JSTL come segue:

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

E ora, si dovrebbe vedere come HTML commentare il nome del servlet prodotta dal contenitore per rendere il file JSP, il cui nome è molto vicino al File sorgente JSP.

0

Si tratta di una soluzione semplice copia-incolla:

<%=this.getClass().getSimpleName().replaceFirst("_jsp","")%> 
Problemi correlati