Czy istnieje sposób, aby uzyskać aktualnie renderowanego pliku JSP z JSTL lub Struts (lub bez)? lubisz _ _ plik _ _ w Pythonie i PHP?Pobierz bieżącą nazwę pliku w JSP
Odpowiedz
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.
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".
Ale to pokazuje tylko żądany URI, a nie renderowany jsp, jeśli pochodzi z dołączenia lub renderowany z serwletu – elzapp
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.
To proste kopiuj-wklej rozwiązanie:
<%=this.getClass().getSimpleName().replaceFirst("_jsp","")%>
- 1. Pobierz bieżącą nazwę metody
- 2. Jak odzyskać bieżącą nazwę strony w JSP?
- 3. Pobierz bieżącą aktywną nazwę aplikacji
- 4. Pobierz bieżącą nazwę widoku w ASP.NET MVC?
- 5. Pobierz bieżącą nazwę funkcji w trybie ścisłym.
- 6. Pobierz bieżącą nazwę pliku z parametrami adresu URL
- 7. pobierz bieżącą ścieżkę wykonywanego pliku .app
- 8. Codeigniter - pobierz nazwę przesłanego pliku
- 9. Węzeł/Multer Pobierz nazwę pliku
- 10. Pobierz nazwę pliku z QFile?
- 11. Pobierz bieżącą nazwę domeny za pomocą Javascript (nie ścieżkę itp.)
- 12. Pobierz nazwę pliku ze wskaźnika pliku
- 13. Pobierz bieżącą ścieżkę folderu
- 14. SPLFileInfo: pobierz nazwę pliku bez rozszerzenia
- 15. React JS pobierz bieżącą datę
- 16. Pobierz bieżącą MethodBase poprzez odbicie
- 17. Pobierz bieżącą ścieżkę do pliku java, który działa
- 18. Pobierz bieżącą ścieżkę w komponencie reagowania
- 19. Angular 2 pobierz bieżącą trasę w straży
- 20. pobierz nazwę rozszerzonej klasy
- 21. Jak uzyskać bieżącą nazwę hosta w Heroku?
- 22. Pobierz bieżącą stronę System.Web.UI.Page z HttpContext?
- 23. Nodejs: pobierz nazwę funkcji dzwoniącego
- 24. Pobierz nazwę pliku z ciągu znaków w C#
- 25. Pobierz nazwę pliku ze ścieżki tekstowej w javascript?
- 26. Pobierz bieżącą piosenkę za pomocą Cocoa
- 27. PHP: pobierz nazwę przeglądarki
- 28. Odbicie - pobierz nazwę właściwości
- 29. Pobierz bieżącą aktywną kartę przez JS.
- 30. Usuń nazwę pliku (najkrótszy) przez CMake (pobierz nazwę pliku usuwając ostatnie rozszerzenie)
Tak. to był dokładnie taki przypadek, jaki miałem ... Myślę, że to zrobi – elzapp
. 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". –
@ScottChu: W przypadku języka Java 1.4 należy zamiast tego użyć 'getClass(). GetName()'. –