2016-04-18 6 views
1

Ich verwende Spring Batch Admin als Web-Frontend für mein Spring Batch-Projekt zusammen mit Spring Boot.Speicherort für Freemarker-Vorlage und Spring Batch Admin

Batch Admin bietet einige Vorlagen mit Freemarker zum Einrichten des Layouts. Ich habe einige weitere Vorlagen hinzugefügt, die in src/main/webapp/web/layouts/html gespeichert sind, und die Ressourcen sind in dem Verpackungsprozess in der JAR-Datei enthalten.

Wenn ich die App starte, werden meine eigenen Layouts nicht gefunden ("Layouts/html/myOwn.ftl not found" ist die Fehlermeldung).

Ich kann dies lösen, indem ein FreeMarkerConfigurer wie folgt ergänzt:

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 
    <property name="templateLoaderPath"><value>classpath:/WEB-INF/</value></property> 
</bean> 

Allerdings, wenn ich dies tun, sind meine eigenen Vorlagen gefunden, aber die Standard-Templates sind weg (wie layouts/html/home.ftl).

Gibt es eine Möglichkeit, zwei Pfade oder zwei Vorlagenlader bereitzustellen, sodass der Standardvorlagenlader von Spring Batch Admin nicht überschrieben, sondern als Ersatz verwendet wird?

Oder gibt es eine andere Lösung wie die Ressourcen an einem bestimmten Ort zu haben?

+1

Es gibt eine andere Eigenschaft mit dem Namen 'templateLoaderPaths' (beachten Sie das" s "am Ende), wo Sie mehrere Orte angeben können (Beispiel: http://StackOverflow.com/questions/36330590/how-can-Iload- verschachtelte-Ordner-für-Freimarker-Vorlage-mit-Feder-org-Springfra/36344363 # 36344363). Ich weiß nicht, wo Spring Batch Admin die Vorlagen lädt. – ddekany

Antwort

0

Dank @ddekany habe ich die folgende Lösung gefunden.

notwendige Konfiguration für Freemarker:

<bean id="freemarkerConfig" class="org.springframework.batch.admin.web.freemarker.HippyFreeMarkerConfigurer"> 
    <property 
     name="templateLoaderPaths" 
     value="classpath:/WEB-INF/web,classpath:/org/springframework/batch/admin/web" 
    /> 

    <property name="preferFileSystemAccess" value="false" /> 
    <property name="freemarkerVariables"> 
     <map> 
      <entry key="menuManager" value-ref="menuManager" /> 
     </map> 
    </property> 
    <property name="freemarkerSettings"> 
     <props> 
      <prop key="default_encoding">UTF-8</prop> 
      <prop key="output_encoding">UTF-8</prop> 
     </props> 
    </property> 
</bean> 

Die erste Eigenschaft templateLoaderPaths (beachten Sie die zusätzlichen s) ermöglicht mehrere Pfade durch Kommata getrennt zu spezifizieren. Die beiden Pfade sind mein eigener Pfad classpath:/WEB-INF/web und der Pfad zu den Standard Spring Boot Admin-Dateien classpath:/org/springframework/batch/admin/web.

Die zusätzliche Konfiguration für die menuManager ist notwendig, da sonst die Menüeinträge aus der Navigation ausgeblendet werden.

Die benutzerdefinierte Layout Freemarker-Dateien werden im Standardverzeichnis src/main/webapp/WEB-INF/web/layouts/html/ gespeichert und sichtbar sein durch die Vorlage Lader im Glas gebaut werden müssen, enthielt über

<resources> 
     <!-- copy the Freemarker templates --> 
     <resource> 
      <targetPath>WEB-INF</targetPath> 
      <filtering>false</filtering> 
      <directory>${basedir}/src/main/webapp/WEB-INF</directory> 
     </resource> 
    </resources> 

im Projekt pom.xml.