Spring boot verwenden Ressourcen Ordner templates mit JSP-Vorlagen statt webapp-Ordner?
Begann ich eine Spring-Boot-MVC-Projekt und erkannte, dass es zwei Ordner innerhalb resources
. Man nennt templates
und die anderen static
. Ich mag diese Ordner setup.
Das problem ist, dass ich die JSP-Templates verwenden für meine Ansichten. Ich konnte nicht einen .jsp
Vorlage innerhalb der templates
Ordner und habe es an die Arbeit.
Was ich tun musste, ist das erstellen einer webapp
Ordner auf der gleichen Ebene wie src
und resources
. Lege meine JSP-Vorlagen, und dann meine Ansichten gefunden werden können.
Was muss ich neu konfigurieren, um tatsächlich mit meinem JSP-Vorlagen innerhalb der templates
Ordner die liegt in resources
?
- Wenn Sie verwenden möchten, Thymeleaf für die Vorlage dann können Sie z.B. bei mkyong.com/spring-boot/...
- Wie ich schon sagte - JSP nur. Die
templates
Zeug funktioniert für TL-ich weiß, dass - Eigentlich hast du erwähnt, JSP-Vorlage, so dass ich davon ausgegangen du meinst TL, ich glaube nicht, Sie können jsp innerhalb des Ressourcen-Ordners. JSPs sollte innerhalb der webapp.
- Wenn Sie ein neues Projekt starten, nicht verwenden JSP. Verwenden Sie so etwas wie Thymeleaf. JSP funktioniert nur in der web-app-Standorten und anderen Ressourcen-Standorte angegeben, die durch die servlet spec.
- Ich habe keine option, um etwas anderes verwenden, denn JSP ist mit Unternehmens-standard
- Ich stehe vor dem gleichen Problem. Außerdem thymeleaf ist nicht kompatibel mit mehreren client-seitiges templating-engines-auch einfache Schnurrbart. Da versucht wird, zu analysieren alles, Reporte es einfach Fehler sind. In anderen Worten, es nervt. JSP ist alt wie die Hölle, aber es kann alles tun, was TL bedeutet und vieles mehr.
- Nein, tut es nicht. Sie nicht lassen können eine JSP-Datei in einem browser, um die Seite anzuzeigen, in der Erwägung, dass TL ermöglicht es Ihnen, genau das zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend der Maven Dokumentation
src/main/resources
wird am Ende inWEB-INF/classes
im KRIEG.Diesem funktioniert der trick für Spring Boot in Ihrem
application.properties
:Wenn Sie es vorziehen Java-Konfiguration ist dies der Weg zu gehen:
Update mit einem full-Beispiel
Diesem Beispiel wurde basierend auf Frühlings-Initialisierer (Gradle-Projekt mit "Web" - Abhängigkeit). Ich habe gerade
apply plugin: 'war'
zu denbuild.gradle
, in der die hinzugefügten/geänderten Dateien unten gebaut teh-Projekt mitgradle war
eingesetzt und es zu meinem application server (Tomcat 8).Dies ist die Verzeichnisstruktur des Beispielprojekts:
ApplicationConfiguration.java: siehe oben
DemoApplication.java:
DemoController.java:
index.jsp:
/src/main/resources/META-INF/resources/WEB-INF/jsp
nach dieser Artikel, aber das ist nicht das, was der OP wollteOffizielle Informationen:
Ressource-handling:
Unterstützt template-engine
[...]
[..]
Quelle
Spring boot JSP Einschränkungen
Quelle
Technische änderung
Sagen, spring boot, um von dort zu laden
JSP files
. Inapplication.properties
setQuelle
Probe spring boot mit JSP
In Fall, dass Sie verwenden möchten
JSP
mit spring boot hier sind zwei Beispiele:https://github.com/spring-projects/spring-boot/tree/v1.5.9.RELEASE/spring-boot-samples/spring-boot-sample-web-jsp
https://github.com/joakime/spring-boot-jsp-demo
templates
Ordner nachschlagen des JSPs anstelle von "Umgehung" der lookup-Mechanismus mit derwebapp/WEB-INF
. Aus deiner Antwort, es ist immer noch nicht klar ist mir, wie dies zu tun. Das erste Beispiel holt Sie aus derwebapp
Verzeichnis, die zweite verwendet die spezielleMETA-INF
/WEB-INF
combo. Es ist ähnlich zu dem, was der OP schon getan. Wie erhalten Sie direkt übertemplates
ist immer noch offen.Zusammenfassen es, keine der vorgeschlagenen Antworten, die für mich gearbeitet, so weit. Verwenden Sie eine leere Spring-boot-starter-Projekt.
Irgendwie etwas aussieht verdrahtet, innen Frühjahr oder servlets, so dass JSP muss in
/webapp
(oder einen Unterordner). Im Gegensatz zu Standard-thymeleaf templates, die gesucht werden) in/resources/templates
.Ich habe versucht, alle Arten von änderungen, die eine Menge von verschiedenen Konfigurationen, aber war nicht in der Lage zu ändern, das Verhalten. Es ist nur Komplexität produziert und war nicht in der Lage zu dienen, die JSPs nicht mehr. Also, bottom line, wenn Sie mit JSPs, legte Sie in
/webapp
. Es funktioniert auch durch addding null - Konfiguration mit einem controller wie:@GetMapping("/foo")
public String serveFoo() {
return "relative-path-inside-webapp/foo.jsp";
}
Auf einer anderen Anmerkung, standardmäßig, die
/webapp
Ordner auch versteckt in der Spring Toolsuite, so müssen Sie manuell konfigurieren Sie es als "source folder".