I wro4j bin mit statischen Inhalten minify. In meiner Entwicklungsumgebung möchte ich jedoch die unkomprimierten Versionen meiner JS- und CSS-Dateien verwenden.Warum Thymeleaf Code funktioniert nicht im Kopfteil von HTML, sondern arbeitet im Körper feinen
Um es in einen Kontext zu setzen, ich bin mit Frühlings-Boot und Thymeleaf.
Dieser Code nicht in den <head></head>
meine HTML funktioniert:
<th:block th:if="${@environment.getActiveProfiles()[0] != 'development'}">
<link th:href="@{/wro4j/compressed.css}" rel="stylesheet"></link>
</th:block>
<th:block th:if="${@environment.getActiveProfiles()[0] == 'development'}">
<link th:href="@{/css/uncompressed.css}" rel="stylesheet"></link>
</th:block>
Was ich aus dem Code oben in der Quelle meiner HTML sehen ist:
<link rel="stylesheet" href="/wro4j/compressed.css" />
<link rel="stylesheet" href="/css/uncompressed.css" />
Sicherlich die einzige css, dass sollte uncompressed.css enthalten sein, da ich mein Profil auf Entwicklung in 'application.yml' eingestellt habe.
Allerdings, wenn ich in der <body></body>
so etwas wie die folgenden tun wäre, würde es perfekt arbeiten, wie ich erwarten:
<th:block th:if="${@environment.getActiveProfiles()[0] == 'development'}">
<div th:text="${@environment.getActiveProfiles()[0]}"></div>
</th:block>
<th:block th:if="${@environment.getActiveProfiles()[0] != 'development'}">
<div th:text="'WHAT THE HECK!' + ${@environment.getActiveProfiles()[0]"></div>
</th:block>
mein Federprofil Entwicklung gesetzt Nachdem in application.yml
, was ich erwarten würde, um zu sehen, Von letzterem Block ist "Entwicklung" und nicht "WAS DIE HECK! -Entwicklung" und genau das sehe ich. Warum verhält sich derselbe Code nicht wie erwartet im Kopfbereich meines HTML-Codes?
Was fehlt mir?
See [dieser Fehler] (https : //github.com/thymeleaf/thymeleaf/issues/246). Sie können einfach "th: if" direkt auf dem "link" verwenden und "th: other" auf dem anderen verwenden. –
@BoristheSpider Sie sollten dies als eine Lösung veröffentlichen, damit es –
@hamster Eine alternative Option zum Ändern der Dateinamen für Entwickler & Produktion accpeted werden kann wäre es, die Dateien unterschiedlich auf die Umwelt basiert zu bauen. Tools wie Gulp oder Webpack funktionieren großartig. Sie können auch in Maven & Gradle-Projekte integriert werden. Ein bisschen über den Rahmen dieser Frage hinaus, aber ich dachte, ich würde es trotzdem erwähnen. –