2016-04-18 18 views
1

私はSpring BatchプロジェクトのWebフロントエンドとしてSpring Batch AdminをSpring Bootと共に使用しています。Freemarkerテンプレートの場所とSpringバッチ管理

バッチ管理では、Freemarkerを使用してレイアウトを設定するためのテンプレートがいくつか用意されています。私はsrc/main/webapp/web/layouts/htmlに格納されているいくつかのテンプレートを追加し、ressourcesはパッケージ化プロセスに.jarファイルに含まれています。

私がアプリケーションを起動すると、自分のレイアウトが見つかりません( "layouts/html/myOwn.ftl not found"はエラーメッセージです)。

私はこのようなFreeMarkerConfigurerを追加することによってこの問題を解決することができます

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

私はこれを行うときしかし、私自身のテンプレートが発見されたが、標準テンプレートがなくなっている(layouts/html/home.ftlが好き)。

2つのパスまたは2つのテンプレートローダーを用意して、Spring Batch Adminのデフォルトのテンプレートローダーを上書きせずにフォールバックとして使用する方法はありますか?

または特定の場所にリソースを持つような他の解決策がありますか?

+1

複数の場所を指定できる 'templateLoaderPaths'という名前のプロパティがあります(最後に「s」に注意してください)(例:http://stackoverflow.com/questions/36330590/how-can-i-load- freemarker-template-using-spring-org-springfra/36344363#36344363)を使用しています。私はSpring Batch Adminがどこからテンプレートを読み込むのかわかりません。 – ddekany

答えて

0

@ddekanyのおかげで、私は次の解決策を考え出しました。 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> 

最初のプロパティtemplateLoaderPathsは(追加のを観察)カンマで区切って複数のパスを指定することを可能にします。 2つのパスは自分自身のパスclasspath:/WEB-INF/webで、デフォルトのSpringブート管理ファイルclasspath:/org/springframework/batch/admin/webへのパスです。

menuManagerの追加の設定が必要です。そうしないと、ナビゲーションのメニュー項目が表示されなくなります。

カスタムFreeMarkerのレイアウトファイルは、デフォルトの場所src/main/webapp/WEB-INF/web/layouts/html/に保存され、プロジェクトのpom.xml

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

経由ジャービルドに含まれなければならテンプレートローダによって見えるようにします。

関連する問題