クラス FreeMarkerView
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、InitializingBean
、ApplicationContextAware
、View
View
実装。次の構成プロパティを公開します。
-
url
: FreeMarkerConfigurer のtemplateLoaderPath
に対する FreeMarker テンプレートの位置。 -
encoding
: FreeMarker テンプレートファイルを読み取るときにバイトシーケンスを文字シーケンスにデコードするために使用されるエンコーディング。デフォルトは FreeMarkerConfiguration
によって決定されます。
アプリケーションコンテキストでアクセス可能な FreeMarkerConfigurer
などの単一の FreeMarkerConfig
オブジェクトに依存します。あるいは、FreeMarker Configuration
を setConfiguration(freemarker.template.Configuration)
経由で直接設定することもできます。
注意 : レスポンスをレンダリングするときとクライアントがレスポンスを読み取るときに正しいエンコーディングが使用されるようにするには、次の手順を実行する必要があります。
- FreeMarker
Configuration
でデフォルトのエンコーディングを設定するか、このビューのエンコーディングを設定します。 AbstractView.setSupportedMediaTypes(java.util.List)
またはViewResolverSupport.setSupportedMediaTypes(java.util.List)
を介して構成されたencoding
と等しいcharset
を使用して、サポートされているメディア型を構成します。
FreeMarkerConfigurer
は FreeMarker Configuration
のデフォルトのエンコーディングを "UTF-8" に設定し、AbstractView
はサポートされるメディア型をデフォルトで "text/html;charset=UTF-8"
に設定することに注意してください。これらのデフォルト値はほとんどのアプリケーションに適していると考えられます。メモ: Spring の FreeMarker サポートには FreeMarker 2.3.33 以上が必要です。
- 導入:
- 5.0
- 作成者:
- Rossen Stoyanchev, Sam Brannen
フィールドサマリー
修飾子と型フィールド説明static final StringSE
テンプレートモデルのRequestContext
インスタンスの属性名。Spring のマクロで使用可能 — たとえば、BindStatus
オブジェクトの作成用。クラス org.springframework.web.reactive.result.view.AbstractView から継承されたフィールド
logger, REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME
インターフェース org.springframework.web.reactive.result.view.View から継承されたフィールド
BINDING_CONTEXT_ATTRIBUTE
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
protected FreeMarkerConfig
ApplicationContext
でFreeMarkerConfig
オブジェクトを自動検出します。boolean
checkResourceExists
(LocaleSE locale) このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。protected freemarker.template.Configuration
このビューで使用される FreeMarkerConfiguration
を取得します。protected StringSE
このビューの FreeMarker テンプレートファイルを読み取るときにバイトシーケンスを文字シーケンスにデコードするために使用されるエンコーディングを取得するか、エンコーディングを決定するために FreeMarkerConfiguration
を使用する必要があることを示すnull
を取得します。getModelAttributes
(MapSE<StringSE, ?> model, ServerWebExchange exchange) Spring FreeMarker マクロで使用するRequestContext
を潜在的に公開し、このメソッドの継承された実装に委譲することにより、レンダリングに使用するモデルを準備します。protected freemarker.template.ObjectWrapper
設定された FreeMarkerObjectWrapper
を取得します。指定されていない場合はデフォルトのラッパーを取得します。protected freemarker.template.SimpleHash
getTemplateModel
(MapSE<StringSE, ObjectSE> model, ServerWebExchange exchange) 指定されたモデルマップの FreeMarker テンプレートモデルを作成します。protected reactor.core.publisher.Mono<freemarker.template.Template>
lookupTemplate
(LocaleSE locale) 指定されたロケールで、設定されている場合は設定されたエンコーディングを使用して、このビューによってレンダリングされる FreeMarkerTemplate
を取得します。protected freemarker.template.Configuration
実際の使用のために FreeMarkerConfiguration
を取得します。protected reactor.core.publisher.Mono<VoidSE>
renderInternal
(MapSE<StringSE, ObjectSE> renderAttributes, MediaType contentType, ServerWebExchange exchange) ビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。reactor.core.publisher.Mono<BooleanSE>
resourceExists
(LocaleSE locale) このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。void
setCharset
(CharsetSE charset) このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用されるCharset
SE を設定します。void
setConfiguration
(freemarker.template.Configuration configuration) このビューで使用される FreeMarkerConfiguration
を設定します。void
setEncoding
(StringSE encoding) このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用するエンコーディングを設定します。void
setExposeSpringMacroHelpers
(boolean exposeSpringMacroHelpers) "springMacroRequestContext" という名前で、Spring のマクロライブラリが使用するRequestContext
を公開するかどうかを設定します。クラス org.springframework.web.reactive.result.view.AbstractUrlBasedView から継承されたメソッド
getUrl, setUrl, toString
クラス org.springframework.web.reactive.result.view.AbstractView から継承されたメソッド
createRequestContext, formatViewName, getApplicationContext, getBeanName, getDefaultCharset, getRequestContextAttribute, getRequestDataValueProcessor, getSupportedMediaTypes, obtainApplicationContext, render, resolveAsyncAttributes, setApplicationContext, setBeanName, setDefaultCharset, setRequestContextAttribute, setSupportedMediaTypes
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSE
インターフェース org.springframework.web.reactive.result.view.View から継承されたメソッド
isRedirectView
フィールドの詳細
SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE
テンプレートモデルのRequestContext
インスタンスの属性名。Spring のマクロで使用可能 — たとえば、BindStatus
オブジェクトの作成用。- 導入:
- 5.2
- 関連事項:
コンストラクターの詳細
FreeMarkerView
public FreeMarkerView()
メソッドの詳細
setConfiguration
このビューで使用される FreeMarkerConfiguration
を設定します。通常、このプロパティは直接設定されません。代わりに、FreeMarker 構成を取得するために使用される Spring アプリケーションコンテキストで単一の
FreeMarkerConfig
が期待されます。getConfiguration
このビューで使用される FreeMarkerConfiguration
を取得します。obtainConfiguration
protected freemarker.template.Configuration obtainConfiguration()実際の使用のために FreeMarkerConfiguration
を取得します。- 戻り値:
- FreeMarker 構成 (非
null
) - 例外:
IllegalStateExceptionSE
-Configuration
オブジェクトセットがない場合- 関連事項:
setEncoding
このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用するエンコーディングを設定します。デフォルトでは
null
に設定され、エンコードを決定するために FreeMarkerConfiguration
を使用する必要があることを示します。非 null エンコーディングは、FreeMarker
Configuration
によって決定されたデフォルトのエンコーディングをオーバーライドします。ここでまたは FreeMarker
Configuration
でエンコーディングが明示的に設定されていない場合、FreeMarker はプラットフォームファイルエンコーディング (JVM システムプロパティfile.encoding
で定義) を使用してテンプレートファイルを読み取ります。プラットフォームファイルエンコーディングが定義されていない場合は UTF-8 を使用します。ただし、FreeMarkerConfigurer
は FreeMarkerConfiguration
のデフォルトエンコーディングを "UTF-8" に設定することに注意してください。すべてのテンプレートが共通のエンコーディングを共有する場合は、テンプレートごとにではなく、FreeMarker
Configuration
でエンコーディングを指定することをお勧めします。指定されたエンコーディングまたはデフォルトのエンコーディングはテンプレートのレンダリングには使用されないことに注意してください。代わりに、レンダリングプロセスに明示的なエンコーディングを指定する必要があります。詳細については、クラスレベルのドキュメントの注記を参照してください。
- 関連事項:
Configuration.setDefaultEncoding(java.lang.String)
setCharset(Charset)
getEncoding()
setCharset
このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用されるCharset
SE を設定します。詳細は
setEncoding(String)
を参照してください。- 導入:
- 6.2
- 関連事項:
getEncoding
このビューの FreeMarker テンプレートファイルを読み取るときにバイトシーケンスを文字シーケンスにデコードするために使用されるエンコーディングを取得するか、エンコーディングを決定するために FreeMarkerConfiguration
を使用する必要があることを示すnull
を取得します。- 関連事項:
setExposeSpringMacroHelpers
public void setExposeSpringMacroHelpers(boolean exposeSpringMacroHelpers) "springMacroRequestContext" という名前で、Spring のマクロライブラリが使用するRequestContext
を公開するかどうかを設定します。デフォルトは
true
です。Spring の FreeMarker のデフォルトマクロに必要です。Spring ヘルパーマクロを利用する場合を除き、これは HTML フォームを使用するテンプレートには必要ないことに注意してください。
- 導入:
- 5.2
- 関連事項:
afterPropertiesSet
インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
AbstractUrlBasedView
のafterPropertiesSet
- 例外:
ExceptionSE
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合
autodetectConfiguration
ApplicationContext
でFreeMarkerConfig
オブジェクトを自動検出します。- 戻り値:
- このビューに使用する
FreeMarkerConfig
インスタンス - 例外:
BeansException
-FreeMarkerConfig
インスタンスが見つからなかった場合- 関連事項:
checkResourceExists
このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。オーバーライドして動作をカスタマイズできます。たとえば、複数のテンプレートを単一のビューにレンダリングする場合などです。
- 次で指定:
- クラス
AbstractUrlBasedView
のcheckResourceExists
- パラメーター:
locale
- 探している希望のロケール- 戻り値:
- リソースが存在する場合は
false
、存在しないことがわかっている場合はfalse
resourceExists
このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。オーバーライドして動作をカスタマイズできます。たとえば、複数のテンプレートを単一のビューにレンダリングする場合などです。
- オーバーライド:
- クラス
AbstractUrlBasedView
のresourceExists
- パラメーター:
locale
- 探している希望のロケール- 戻り値:
- リソースが存在する場合は
false
、存在しないことがわかっている場合はfalse
- 導入:
- 6.1
getModelAttributes
protected reactor.core.publisher.Mono<MapSE<StringSE,ObjectSE>> getModelAttributes(@Nullable MapSE<StringSE, ?> model, ServerWebExchange exchange) Spring FreeMarker マクロで使用するRequestContext
を潜在的に公開し、このメソッドの継承された実装に委譲することにより、レンダリングに使用するモデルを準備します。renderInternal
protected reactor.core.publisher.Mono<VoidSE> renderInternal(MapSE<StringSE, ObjectSE> renderAttributes, @Nullable MediaType contentType, ServerWebExchange exchange) クラスからコピーされた説明:AbstractView
ビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。- 次で指定:
- クラス
AbstractView
のrenderInternal
- パラメーター:
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()設定された FreeMarkerObjectWrapper
を取得します。指定されていない場合はデフォルトのラッパーを取得します。- 関連事項:
Configurable.getObjectWrapper()
lookupTemplate
指定されたロケールで、設定されている場合は設定されたエンコーディングを使用して、このビューによってレンダリングされる FreeMarkerTemplate
を取得します。デフォルトでは、"url" Bean プロパティで指定されたテンプレートが取得され、テンプレートの検索が操作をブロックする可能性があるため、返された mono は制限されたエラスティックスケジューラにサブスクライブされます。
- パラメーター:
locale
- 現在のロケール- 戻り値:
- レンダリングする FreeMarker テンプレート
- 導入:
- 6.1