クラス FreeMarkerView
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、InitializingBean
、ApplicationContextAware
、ServletContextAware
、View
次の構成プロパティを公開します。
-
url
: FreeMarker テンプレートコンテキスト (ディレクトリ) に対する FreeMarker テンプレートの場所。 -
encoding
: FreeMarker テンプレートファイルを読み取るときにバイトシーケンスを文字シーケンスにデコードするために使用されるエンコーディング。デフォルトは FreeMarkerConfiguration
によって決定されます。 -
contentType
: レンダリングされたレスポンスのコンテンツ型。デフォルトは"text/html;charset=ISO-8859-1"
ですが、実際に生成されたコンテンツ型に対応する値に設定する必要がある場合があります (下記の注記を参照)。
現在の Web アプリケーションコンテキストでアクセス可能な FreeMarkerConfigurer
などの単一の FreeMarkerConfig
オブジェクトに依存します。あるいは、FreeMarker Configuration
を setConfiguration(freemarker.template.Configuration)
経由で直接設定することもできます。
注 : レスポンスのレンダリング時に正しいエンコーディングが使用されるようにするには、適切な charset
属性 (例: "text/html;charset=UTF-8"
) を使用してコンテンツ型を設定します。FreeMarkerViewResolver
を使用してビューを作成する場合は、FreeMarkerViewResolver
でコンテンツ型を直接設定します。ただし、Spring Framework 6.2 以降では、setEncoding(String)
、FreeMarkerConfigurationFactory.setDefaultEncoding(String)
、または Configuration.setDefaultEncoding(String)
のいずれかを使用して明示的なエンコーディングを設定している場合は、FreeMarkerViewResolver
でコンテンツ型を明示的に設定する必要はなくなりました。
メモ: Spring の FreeMarker サポートには FreeMarker 2.3.33 以上が必要です。
- 導入:
- 03.03.2004
- 作成者:
- Darren Davison, Juergen Hoeller, Sam Brannen
- 関連事項:
フィールドサマリー
クラス org.springframework.web.servlet.view.AbstractTemplateView から継承されたフィールド
SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE
クラス org.springframework.web.servlet.view.AbstractView から継承されたフィールド
DEFAULT_CONTENT_TYPE
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたフィールド
logger
インターフェース org.springframework.web.servlet.View から継承されたフィールド
PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPE
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明protected FreeMarkerConfig
ApplicationContext
を介してFreeMarkerConfig
オブジェクトを自動検出します。protected freemarker.template.SimpleHash
buildTemplateModel
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) 指定されたモデルマップの FreeMarker テンプレートモデルを作成します。boolean
checkResource
(LocaleSE locale) このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。protected void
doRender
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) 使用する完全なテンプレートモデルを含む特定のモデルマップを使用して、FreeMarker ビューを特定のレスポンスにレンダリングします。protected void
exposeHelpers
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request) 各レンダリング操作に固有のヘルパーを公開します。protected freemarker.template.Configuration
このビューで使用される FreeMarkerConfiguration
を返します。protected StringSE
このビューの FreeMarker テンプレートファイルを読み取るときにバイトシーケンスを文字シーケンスにデコードするために使用されるエンコーディングを取得するか、エンコーディングを決定するために FreeMarkerConfiguration
を使用する必要があることを示すnull
を取得します。protected freemarker.template.ObjectWrapper
設定された FreeMarkerObjectWrapper
を返します。指定されていない場合はデフォルトのラッパーを返します。protected freemarker.template.Template
getTemplate
(StringSE name, LocaleSE locale) 指定された名前とロケールで、設定されている場合は設定されたエンコーディングを使用して、このビューによってレンダリングされる FreeMarkerTemplate
を取得します。protected freemarker.template.Template
getTemplate
(LocaleSE locale) 指定されたロケールで、設定されている場合は設定されたエンコーディングを使用して、このビューによってレンダリングされる FreeMarkerTemplate
を取得します。protected void
initServletContext
(ServletContextEE servletContext) 起動時に呼び出されます。protected freemarker.template.Configuration
実際の使用のために FreeMarkerConfiguration
を取得します。protected void
processTemplate
(freemarker.template.Template template, freemarker.template.SimpleHash model, HttpServletResponseEE response) FreeMarker テンプレートを処理し、結果をレスポンスに書き込みます。protected void
renderMergedTemplateModel
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) モデルマップを FreeMarker テンプレートとマージして処理します。void
setCharset
(CharsetSE charset) このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用されるCharset
SE を設定します。void
setConfiguration
(freemarker.template.Configuration configuration) このビューで使用される FreeMarkerConfiguration
を設定します。void
setEncoding
(StringSE encoding) このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用するエンコーディングを設定します。クラス org.springframework.web.servlet.view.AbstractTemplateView から継承されたメソッド
applyContentType, renderMergedOutputModel, setAllowRequestOverride, setAllowSessionOverride, setExposeRequestAttributes, setExposeSessionAttributes, setExposeSpringMacroHelpers
クラス org.springframework.web.servlet.view.AbstractUrlBasedView から継承されたメソッド
afterPropertiesSet, getUrl, isUrlRequired, setUrl, toString
クラス org.springframework.web.servlet.view.AbstractView から継承されたメソッド
addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, formatViewName, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getRequestToExpose, getStaticAttributes, isExposePathVariables, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposeContextBeansAsAttributes, setExposedContextBeanNames, setExposePathVariables, setRequestContextAttribute, setResponseContentType, writeToResponse
クラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, isContextRequired, setServletContext
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
コンストラクターの詳細
FreeMarkerView
public FreeMarkerView()
メソッドの詳細
setEncoding
このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用するエンコーディングを設定します。デフォルトでは
null
に設定され、エンコードを決定するために FreeMarkerConfiguration
を使用する必要があることを示します。非 null エンコーディングは、FreeMarker
Configuration
によって決定されたデフォルトのエンコーディングをオーバーライドします。ここでまたは FreeMarker
Configuration
でエンコーディングが明示的に設定されていない場合、FreeMarker はプラットフォームファイルエンコーディング (JVM システムプロパティfile.encoding
で定義) を使用してテンプレートファイルを読み取ります。プラットフォームファイルエンコーディングが未定義の場合は UTF-8 を使用します。すべてのテンプレートが共通のエンコーディングを共有する場合は、テンプレートごとにではなく、FreeMarker
Configuration
でエンコーディングを指定することをお勧めします。レスポンスのレンダリングに使用されるエンコーディングの詳細については、クラスレベルのドキュメントの注記を参照してください。
- 関連事項:
Configuration.setDefaultEncoding(java.lang.String)
setCharset(Charset)
getEncoding()
AbstractView.setContentType(String)
setCharset
このビューの FreeMarker テンプレートファイルを読み取るときに、バイトシーケンスを文字シーケンスにデコードするために使用されるCharset
SE を設定します。詳細は
setEncoding(String)
を参照してください。- 導入:
- 6.2
- 関連事項:
getEncoding
このビューの FreeMarker テンプレートファイルを読み取るときにバイトシーケンスを文字シーケンスにデコードするために使用されるエンコーディングを取得するか、エンコーディングを決定するために FreeMarkerConfiguration
を使用する必要があることを示すnull
を取得します。- 関連事項:
setConfiguration
このビューで使用される FreeMarkerConfiguration
を設定します。設定されていない場合は、デフォルトの検索が行われます。現在の Web アプリケーションコンテキストには、任意の Bean 名を持つ単一の
FreeMarkerConfig
が想定されます。注 : このメソッドを使用すると、単一のFreeMarkerView
インスタンスごとにTaglibFactory
の新しいインスタンスが作成されます。これは、メモリと初期 CPU 使用量の点で非常にコストがかかる可能性があります。運用環境では、単一の共有TaglibFactory
を公開するFreeMarkerConfig
を使用することをお勧めします。getConfiguration
このビューで使用される FreeMarkerConfiguration
を返します。obtainConfiguration
protected freemarker.template.Configuration obtainConfiguration()実際の使用のために FreeMarkerConfiguration
を取得します。- 戻り値:
- FreeMarker 構成 (非
null
) - 例外:
IllegalStateExceptionSE
- 構成オブジェクトが設定されていない場合- 導入:
- 5.0
initServletContext
起動時に呼び出されます。単一のFreeMarkerConfig
Bean を検索して、このビューに関連するConfiguration
を見つけます。デフォルトのロケールのテンプレートが見つかるかどうかを確認します。ロケール固有のテンプレートが見つからない場合、FreeMarker はロケール固有でないテンプレートをチェックします。
- オーバーライド:
- クラス
WebApplicationObjectSupport
のinitServletContext
- パラメーター:
servletContext
- このアプリケーションオブジェクトが実行される ServletContext (非null
)- 例外:
BeansException
- 関連事項:
TemplateCache.getTemplate(java.lang.String, java.util.Locale, java.lang.Object, java.lang.String, boolean)
autodetectConfiguration
ApplicationContext
を介してFreeMarkerConfig
オブジェクトを自動検出します。- 戻り値:
- FreeMarkerViews に使用する
FreeMarkerConfig
インスタンス - 例外:
BeansException
-FreeMarkerConfig
Bean が見つからない場合- 関連事項:
getObjectWrapper
protected freemarker.template.ObjectWrapper getObjectWrapper()設定された FreeMarkerObjectWrapper
を返します。指定されていない場合はデフォルトのラッパーを返します。- 関連事項:
Configurable.getObjectWrapper()
checkResource
このビューに使用される FreeMarker テンプレートが存在し、有効であることを確認してください。オーバーライドして動作をカスタマイズできます。たとえば、複数のテンプレートを単一のビューにレンダリングする場合などです。
- オーバーライド:
- クラス
AbstractUrlBasedView
のcheckResource
- パラメーター:
locale
- 探している希望のロケール- 戻り値:
- リソースが存在する(または存在すると想定される)場合は
true
。false
が存在しないことがわかっている場合 - 例外:
ExceptionSE
- リソースは存在するが無効である場合 (たとえば、解析できなかった)
renderMergedTemplateModel
protected void renderMergedTemplateModel(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSEモデルマップを FreeMarker テンプレートとマージして処理します。出力はサーブレットレスポンスに送られます。
カスタム動作が必要な場合は、このメソッドをオーバーライドできます。
- 次で指定:
- クラス
AbstractTemplateView
のrenderMergedTemplateModel
- パラメーター:
model
- 必要に応じてリクエスト属性とセッション属性がマージされた出力マップの組み合わせrequest
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンス- 例外:
ExceptionSE
- レンダリングに失敗した場合
exposeHelpers
protected void exposeHelpers(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request) throws ExceptionSE各レンダリング操作に固有のヘルパーを公開します。これは、異なるレンダリング操作が互いのフォーマットなどを上書きできないようにするために必要です。renderMergedTemplateModel
によって呼び出されます。デフォルトの実装は空です。このメソッドをオーバーライドして、モデルにカスタムヘルパーを追加できます。- パラメーター:
model
- マージ時にテンプレートに渡されるモデルrequest
- 現在の HTTP リクエスト- 例外:
ExceptionSE
- コンテキストに情報を追加しているときに致命的なエラーが発生した場合- 関連事項:
doRender
protected void doRender(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE使用する完全なテンプレートモデルを含む特定のモデルマップを使用して、FreeMarker ビューを特定のレスポンスにレンダリングします。デフォルトの実装では、
getTemplate
を介して取得された "url" Bean プロパティで指定されたテンプレートがレンダリングされます。processTemplate
メソッドに委譲して、テンプレートインスタンスを指定されたテンプレートモデルとマージします。標準の Freemarker ハッシュモデルをモデルに追加します: リクエストパラメーター、リクエスト、セッション、アプリケーション(ServletContext)、および JSP タグライブラリハッシュモデル。
複数のテンプレートを単一のビューにレンダリングするなど、動作をカスタマイズするためにオーバーライドできます。
- パラメーター:
model
- レンダリングに使用するモデルrequest
- 現在の HTTP リクエストresponse
- 現在のサーブレットレスポンス- 例外:
IOExceptionSE
- テンプレートファイルを取得できなかった場合ExceptionSE
- レンダリングに失敗した場合- 関連事項:
buildTemplateModel
protected freemarker.template.SimpleHash buildTemplateModel(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) 指定されたモデルマップの FreeMarker テンプレートモデルを作成します。デフォルトの実装は
AllHttpScopesHashModel
を構築します。- パラメーター:
model
- レンダリングに使用するモデルrequest
- 現在の HTTP リクエストresponse
- 現在のサーブレットレスポンス- 戻り値:
SimpleHash
またはそのサブクラスとしての FreeMarker テンプレートモデル
getTemplate
指定されたロケールで、設定されている場合は設定されたエンコーディングを使用して、このビューによってレンダリングされる FreeMarkerTemplate
を取得します。デフォルトでは、"url" Bean プロパティで指定されたテンプレートが取得されます。
- パラメーター:
locale
- 現在のロケール- 戻り値:
- FreeMarker
Template
をレンダリングする - 例外:
IOExceptionSE
- テンプレートファイルを取得できなかった場合- 関連事項:
getTemplate
protected freemarker.template.Template getTemplate(StringSE name, LocaleSE locale) throws IOExceptionSE 指定された名前とロケールで、設定されている場合は設定されたエンコーディングを使用して、このビューによってレンダリングされる FreeMarkerTemplate
を取得します。サブクラスから呼び出して、特定のテンプレートを取得できます。たとえば、複数のテンプレートを 1 つのビューにレンダリングできます。
- パラメーター:
name
- 目的のテンプレートのファイル名locale
- 現在のロケール- 戻り値:
- FreeMarker テンプレート
- 例外:
IOExceptionSE
- テンプレートファイルを取得できなかった場合- 関連事項:
processTemplate
protected void processTemplate(freemarker.template.Template template, freemarker.template.SimpleHash model, HttpServletResponseEE response) throws IOExceptionSE, freemarker.template.TemplateException FreeMarker テンプレートを処理し、結果をレスポンスに書き込みます。Spring Framework 6.2 以降、このメソッドは、FreeMarker
Environment
の出力エンコーディングを、指定されたHttpServletResponse
EE の文字エンコーディングに設定します。動作をカスタマイズするためにオーバーライドできます。
- パラメーター:
template
- 処理するテンプレートmodel
- テンプレートのモデルresponse
- サーブレットのレスポンス (これを使用して OutputStream または Writer を入手します)- 例外:
IOExceptionSE
- テンプレートファイルを取得できなかった場合freemarker.template.TemplateException
- FreeMarker によってスローされた場合- 関連事項:
Template.createProcessingEnvironment(Object, java.io.Writer)
Environment.process()