クラス 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 の FreeMarker サポートには、FreeMarker 2.3.21 以上が必要です。Spring Framework 6.0 の時点で、FreeMarker テンプレートは、JSP サポートなしで最小限の方法でレンダリングされ、MVC 提供のモデルマップに加えて、一般的なサーブレットリソースとの調整のためにリクエスト属性を公開するだけです。
- 導入:
- 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
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)
getEncoding()
AbstractView.setContentType(String)
getEncoding
このビューの FreeMarker テンプレートファイルを読み取るときにバイトシーケンスを文字シーケンスにデコードするために使用されるエンコーディングを取得するか、エンコーディングを決定するために FreeMarkerConfiguration
を使用する必要があることを示すnull
を取得します。- 関連事項:
setConfiguration
このビューで使用される FreeMarkerConfiguration
を設定します。設定されていない場合は、デフォルトの検索が行われます。つまり、現在の Web アプリケーションコンテキストで、任意の Bean 名を持つ単一の
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
メソッドに委譲して、テンプレートインスタンスを指定されたテンプレートモデルとマージします。複数のテンプレートを単一のビューにレンダリングするなど、動作をカスタマイズするためにオーバーライドできます。
- パラメーター:
model
- レンダリングに使用するモデルrequest
- 現在の HTTP リクエストresponse
- 現在のサーブレットレスポンス- 例外:
IOExceptionSE
- テンプレートファイルを取得できなかった場合ExceptionSE
- レンダリングに失敗した場合- 関連事項:
buildTemplateModel
protected freemarker.template.SimpleHash buildTemplateModel(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) 指定されたモデルマップの FreeMarker テンプレートモデルを作成します。デフォルトの実装では、指定された MVC モデルの
SimpleHash
を構築し、リクエスト属性への追加のフォールバックを使用します。- パラメーター:
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 テンプレートをサーブレットレスポンスに処理します。動作をカスタマイズするためにオーバーライドできます。
- パラメーター:
template
- 処理するテンプレートmodel
- テンプレートのモデルresponse
- サーブレットのレスポンス (これを使用して OutputStream または Writer を入手します)- 例外:
IOExceptionSE
- テンプレートファイルを取得できなかった場合freemarker.template.TemplateException
- FreeMarker によってスローされた場合- 関連事項:
Template.process(Object, java.io.Writer)