クラス FreeMarkerView
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、InitializingBean
、ApplicationContextAware
、ServletContextAware
、View
次の JavaBean プロパティを公開します。
- url: FreeMarker テンプレートコンテキスト(ディレクトリ)を基準とした、ラップされる FreeMarker テンプレートの場所。
- エンコーディング(オプション、デフォルトは FreeMarker 構成によって決定されます): FreeMarker テンプレートファイルのエンコーディング
現在の Web アプリケーションコンテキストでアクセス可能な FreeMarkerConfigurer
などの単一の FreeMarkerConfig
オブジェクトに、任意の Bean 名で依存します。または、FreeMarker Configuration
オブジェクトを Bean プロパティとして設定することもできます。このアプローチの影響の詳細については、setConfiguration(freemarker.template.Configuration)
を参照してください。
メモ: Spring の FreeMarker サポートには、FreeMarker 2.3 以上が必要です。Spring Framework 6.0 の時点で、FreeMarker テンプレートは、JSP サポートなしで最小限の方法でレンダリングされ、MVC 提供のモデルマップに加えて、一般的なサーブレットリソースとの調整のためにリクエスト属性を公開するだけです。
- 導入:
- 03.03.2004
- 作成者:
- Darren Davison, Juergen Hoeller
- 関連事項:
フィールドサマリー
クラス 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
このビューで使用される FreeMarker 構成を返します。protected StringSE
FreeMarker テンプレートのエンコーディングを返します。protected freemarker.template.ObjectWrapper
構成された FreeMarkerObjectWrapper
、または何も指定されていない場合はdefault wrapper
を返します。protected freemarker.template.Template
getTemplate
(StringSE name, LocaleSE locale) "encoding" Bean プロパティで指定されたエンコーディングを使用して、指定された名前で指定された FreeMarker テンプレートを取得します。protected freemarker.template.Template
getTemplate
(LocaleSE locale) このビューによってレンダリングされる、指定されたロケールの FreeMarker テンプレートを取得します。protected void
initServletContext
(ServletContextEE servletContext) 起動時に呼び出されます。protected freemarker.template.Configuration
実際の使用のために FreeMarker 構成を取得します。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) このビューで使用する FreeMarker 構成を設定します。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 テンプレートファイルのエンコーディングを設定します。デフォルトは、FreeMarker 構成によって決定されます。特に指定がない場合、"ISO-8859-1" です。すべてのテンプレートが共通のエンコードを共有する場合は、テンプレートごとではなく、FreeMarker 構成でエンコードを指定します。
getEncoding
FreeMarker テンプレートのエンコーディングを返します。setConfiguration
このビューで使用する FreeMarker 構成を設定します。これが設定されていない場合、デフォルトの検索が行われます。現在の Web アプリケーションコンテキストでは、任意の Bean 名を持つ 1 つの
FreeMarkerConfig
が予期されます。getConfiguration
このビューで使用される FreeMarker 構成を返します。obtainConfiguration
protected freemarker.template.Configuration obtainConfiguration()実際の使用のために FreeMarker 構成を取得します。- 戻り値:
- FreeMarker 構成 (非
null
) - 例外:
IllegalStateExceptionSE
- 構成オブジェクトが設定されていない場合- 導入:
- 5.0
initServletContext
起動時に呼び出されます。このファクトリに関連する構成を見つけるために、単一の FreeMarkerConfig Bean を探します。デフォルトのロケールのテンプレートが見つかるかどうかを確認します。ロケール固有のテンプレートが見つからない場合、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 に使用する構成インスタンス
- 例外:
BeansException
- 構成インスタンスが見つからなかった場合- 関連事項:
getObjectWrapper
protected freemarker.template.ObjectWrapper getObjectWrapper()構成された FreeMarkerObjectWrapper
、または何も指定されていない場合はdefault wrapper
を返します。- 関連事項:
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
このビューによってレンダリングされる、指定されたロケールの FreeMarker テンプレートを取得します。デフォルトでは、"url" Bean プロパティで指定されたテンプレートが取得されます。
- パラメーター:
locale
- 現在のロケール- 戻り値:
- レンダリングする FreeMarker テンプレート
- 例外:
IOExceptionSE
- テンプレートファイルを取得できなかった場合- 関連事項:
getTemplate
protected freemarker.template.Template getTemplate(StringSE name, LocaleSE locale) throws IOExceptionSE "encoding" Bean プロパティで指定されたエンコーディングを使用して、指定された名前で指定された FreeMarker テンプレートを取得します。サブクラスから呼び出して、特定のテンプレートを取得できます。たとえば、複数のテンプレートを 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)