ビューをレンダリングするための Freemarker テンプレートを使用して、Spring 3.1 を使用する Java webapp があります。特定のアプリケーション プロパティの true/false 値に基づいて、ビューにリンクを条件付きで表示したいと考えています。
で定義された次のアプリ プロパティがありますsrc/main/resources/application.properties
。
showLink=true
Spring MVC で通常の JSP を使用していた場合、SpEL を使用して、次の値に基づいてリンクを条件付きで表示できますshowLink
。
<c:if test="${configuration['showLink']}">
<a href="...">some link</a>
</c:if>
Freemarker テンプレートでこれを行うにはどうすればよいですか? 私はこのようなことをしようとしましたが、それを動作させることができませんでした:
<#assign showLink>${configuration['showLink']}</#assign>
<#if showHelpLink>
<a href="...">some link</a>
</#if>
Spring freemarker マクロ(spring.ftl 内)を見ましたが、最も近いのは、アプリ プロパティではなく、メッセージ プロパティを取得する機能です。
やってみてうまくいかなかったこと
spring.ftl のマクロを見ましたが、最も近いのはメッセージ プロパティです。
ModelMap
また、私の FreeMarker テンプレートはすべてのページのヘッダーであり、自動インポートされるため、コントローラーに値を挿入してから に入れることはできません。
<bean id="abstractFreemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" abstract="true">
...
<property name="freemarkerSettings">
<props>
<prop key="auto_import">
/spring.ftl as spring, /myTemplate.ftl as myTemplate
</prop>
</props>
</property>
...
</bean>
まだ試していないこと
SpEL のサポートを Freemarker に手動で追加する方法を説明しているブログ投稿を見つけました。私がそれを必要とするこの1つのケースでは、それをすべてやりたくありません。
アプリケーションのプロパティ値を取得するためのカスタム タグ ライブラリを作成すると、freemarker テンプレートで次のようなことができます。
<#assign showLink><foo:getAppProperty name="showLink"/></#assign>