クラス FreeMarkerView

実装されたすべてのインターフェース:
AwareBeanNameAwareInitializingBeanApplicationContextAwareView

public class FreeMarkerView extends AbstractUrlBasedView
FreeMarker テンプレートエンジンを使用する View 実装。

アプリケーションコンテキストでアクセス可能な FreeMarkerConfigurer などの単一の FreeMarkerConfig オブジェクトに依存します。または、FreeMarker Configuration は、setConfiguration(freemarker.template.Configuration) を介してこのクラスに直接設定できます。

url プロパティは、FreeMarkerConfigurer の templateLoaderPath に対する FreeMarker テンプレートの位置です。

メモ: Spring の FreeMarker サポートには FreeMarker 2.3 以上が必要です。

導入:
5.0
作成者:
Rossen Stoyanchev, Sam Brannen
  • フィールドの詳細

  • コンストラクターの詳細

    • FreeMarkerView

      public FreeMarkerView()
  • メソッドの詳細

    • setConfiguration

      public void setConfiguration(@Nullable freemarker.template.Configuration configuration)
      このビューで使用される FreeMarker Configuration を設定します。

      通常、このプロパティは直接設定されません。代わりに、FreeMarker 構成を取得するために使用される Spring アプリケーションコンテキストで単一の FreeMarkerConfig が期待されます。

    • getConfiguration

      @Nullable protected freemarker.template.Configuration getConfiguration()
      このビューで使用される FreeMarker Configuration を取得します。
    • obtainConfiguration

      protected freemarker.template.Configuration obtainConfiguration()
      実際の使用のために FreeMarker Configuration を取得します。
      戻り値:
      FreeMarker 構成 (非 null)
      例外:
      IllegalStateExceptionSE - Configuration オブジェクトセットがない場合
      関連事項:
    • setEncoding

      public void setEncoding(@Nullable StringSE encoding)
      FreeMarker テンプレートファイルのエンコーディングを設定します。

      デフォルトでは、FreeMarkerConfigurer は FreeMarker 構成のデフォルトのエンコードを "UTF-8" に設定します。すべてのテンプレートが共通のエンコーディングを共有している場合、テンプレートごとではなく、FreeMarker Configuration でエンコーディングを指定することをお勧めします。

    • getEncoding

      @Nullable protected StringSE getEncoding()
      FreeMarker テンプレートのエンコードを取得します。
    • setExposeSpringMacroHelpers

      public void setExposeSpringMacroHelpers(boolean exposeSpringMacroHelpers)
      "springMacroRequestContext" という名前で、Spring のマクロライブラリが使用する RequestContext を公開するかどうかを設定します。

      デフォルトは true です。

      Spring の FreeMarker のデフォルトマクロに必要です。Spring ヘルパーマクロを利用する場合を除き、これは HTML フォームを使用するテンプレートに必要ないことに注意してください。

      導入:
      5.2
      関連事項:
    • afterPropertiesSet

      public void afterPropertiesSet() throws ExceptionSE
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
      オーバーライド:
      クラス AbstractUrlBasedViewafterPropertiesSet 
      例外:
      ExceptionSE - 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合
    • autodetectConfiguration

      protected FreeMarkerConfig autodetectConfiguration() throws BeansException
      ApplicationContextFreeMarkerConfig オブジェクトを自動検出します。
      戻り値:
      このビューに使用する FreeMarkerConfig インスタンス
      例外:
      BeansException - FreeMarkerConfig インスタンスが見つからなかった場合
      関連事項:
    • checkResourceExists

      public boolean checkResourceExists(LocaleSE locale) throws ExceptionSE
      このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。

      オーバーライドして動作をカスタマイズできます。たとえば、複数のテンプレートを単一のビューにレンダリングする場合などです。

      次で指定:
      クラス AbstractUrlBasedViewcheckResourceExists 
      パラメーター:
      locale - 探している希望のロケール
      戻り値:
      リソースが存在する場合は false、存在しないことがわかっている場合は false 
      例外:
      ExceptionSE - リソースは存在するが無効である場合 (たとえば解析できませんでした)
    • resourceExists

      public reactor.core.publisher.Mono<BooleanSE> resourceExists(LocaleSE locale)
      このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。

      オーバーライドして動作をカスタマイズできます。たとえば、複数のテンプレートを単一のビューにレンダリングする場合などです。

      オーバーライド:
      クラス AbstractUrlBasedViewresourceExists 
      パラメーター:
      locale - 探している希望のロケール
      戻り値:
      リソースが存在する場合は false、存在しないことがわかっている場合は false 
      導入:
      6.1
    • getModelAttributes

      protected reactor.core.publisher.Mono<MapSE<StringSE,ObjectSE>> getModelAttributes(@Nullable MapSE<StringSE,?> model, ServerWebExchange exchange)
      Spring FreeMarker マクロで使用する RequestContext を潜在的に公開し、このメソッドの継承された実装に委譲することにより、レンダリングに使用するモデルを準備します。
      オーバーライド:
      クラス AbstractViewgetModelAttributes 
      導入:
      5.2
      関連事項:
    • renderInternal

      protected reactor.core.publisher.Mono<VoidSE> renderInternal(MapSE<StringSE,ObjectSE> renderAttributes, @Nullable MediaType contentType, ServerWebExchange exchange)
      クラスからコピーされた説明: AbstractView
      ビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。
      次で指定:
      クラス AbstractViewrenderInternal 
      パラメーター:
      renderAttributes - 静的な属性よりも動的な値が優先される、結合された出力マップ(非 null
      contentType - レンダリングするために選択されたコンテンツ型。サポートされているメディア型のいずれかと一致する必要があります
      exchange - 現在の交換
      戻り値:
      レンダリングが成功したときと成功したかどうかを表す Mono 
    • getTemplateModel

      protected freemarker.template.SimpleHash getTemplateModel(MapSE<StringSE,ObjectSE> model, ServerWebExchange exchange)
      指定されたモデルマップの FreeMarker テンプレートモデルを作成します。

      デフォルトの実装は SimpleHash を構築します。

      パラメーター:
      model - レンダリングに使用するモデル
      exchange - 現在の交換
      戻り値:
      SimpleHash またはそのサブクラスとしての FreeMarker テンプレートモデル
    • getObjectWrapper

      protected freemarker.template.ObjectWrapper getObjectWrapper()
      設定された FreeMarker ObjectWrapper を取得します。指定されていない場合はデフォルトのラッパーを取得します。
      関連事項:
      • Configurable.getObjectWrapper()
    • getTemplate

      @DeprecatedSE(since="6.1", forRemoval=true) protected freemarker.template.Template getTemplate(LocaleSE locale) throws IOExceptionSE
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      6.1 以降、lookupTemplate(Locale) が優先され、6.2 で削除される予定
      このビューでレンダリングされる、指定されたロケールの FreeMarker テンプレートを取得します。

      デフォルトでは、"url" Bean プロパティで指定されたテンプレートが取得されます。

      パラメーター:
      locale - 現在のロケール
      戻り値:
      レンダリングする FreeMarker テンプレート
      例外:
      IOExceptionSE
    • lookupTemplate

      protected reactor.core.publisher.Mono<freemarker.template.Template> lookupTemplate(LocaleSE locale)
      このビューによってレンダリングされる、指定されたロケールの FreeMarker テンプレートを取得します。

      デフォルトでは、"url" Bean プロパティで指定されたテンプレートが取得され、テンプレートの検索が操作をブロックする可能性があるため、返された mono は制限されたエラスティックスケジューラにサブスクライブされます。

      パラメーター:
      locale - 現在のロケール
      戻り値:
      レンダリングする FreeMarker テンプレート
      導入:
      6.1