クラス AbstractView
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、ApplicationContextAware
、ServletContextAware
、View
- 既知の直属サブクラス
AbstractFeedView
、AbstractJackson2View
、AbstractPdfView
、AbstractUrlBasedView
、AbstractXlsView
、MarshallingView
View
実装の抽象基本クラス。サブクラスは JavaBeans にして、Spring 管理の Bean インスタンスとして便利に構成できるようにする必要があります。静的属性をサポートし、さまざまな方法でビューで使用できるようにします。静的属性は、レンダリング操作ごとに、指定された動的属性(コントローラーが返したモデル)とマージされます。
WebApplicationObjectSupport
を拡張します。これは、一部のビューに役立ちます。サブクラスは、実際のレンダリングを実装する必要があります。
フィールドサマリー
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたフィールド
logger
インターフェース org.springframework.web.servlet.View から継承されたフィールド
PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPE
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
addStaticAttribute
(StringSE name, ObjectSE value) このビューに静的データを追加し、各ビューで公開します。createMergedOutputModel
(MapSE<StringSE, ?> model, HttpServletRequestEE request, HttpServletResponseEE response) 動的な値と静的な属性を含む結合出力マップ(非null
)を作成します。protected RequestContext
createRequestContext
(HttpServletRequestEE request, HttpServletResponseEE response, MapSE<StringSE, ObjectSE> model) 指定された属性名で公開する RequestContext を作成します。protected ByteArrayOutputStreamSE
このビューの一時的な OutputStream を作成します。protected void
exposeModelAsRequestAttributes
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request) 指定されたマップ内のモデルオブジェクトをリクエスト属性として公開します。protected StringSE
protected boolean
このビューがダウンロードコンテンツ(通常は PDF ファイルや Excel ファイルなどのバイナリコンテンツ)を生成するかどうかを返します。特定のエントリを追加または上書きするオプションを使用して、Map
がこのビューの静的属性にアクセスできるようにします。ビューの名前を返します。このビューのコンテンツ型を返します。RequestContext 属性の名前を返します(存在する場合)。protected HttpServletRequestEE
getRequestToExpose
(HttpServletRequestEE originalRequest) このビューの静的属性を返します。boolean
モデルにパス変数を追加するかどうかを返します。protected void
prepareResponse
(HttpServletRequestEE request, HttpServletResponseEE response) レンダリングのために指定されたレスポンスを準備します。void
render
(MapSE<StringSE, ?> model, HttpServletRequestEE request, HttpServletResponseEE response) 指定されたモデルを指定してビューを準備し、必要に応じて静的属性と RequestContext 属性をマージします。protected abstract void
renderMergedOutputModel
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) ビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。void
setAttributes
(PropertiesSE attributes) java.util.Properties
オブジェクトからこのビューの静的属性を設定します。void
setAttributesCSV
(StringSE propString) 静的属性を CSV 文字列として設定します。void
setAttributesMap
(MapSE<StringSE, ?> attributes) このビューの静的属性をマップから設定します。void
setBeanName
(StringSE beanName) ビューの名前を設定します。void
setContentType
(StringSE contentType) このビューのコンテンツ型を設定します。void
setExposeContextBeansAsAttributes
(boolean exposeContextBeansAsAttributes) 属性がアクセスされたら、遅延チェックを通じて、アプリケーションコンテキスト内のすべての Spring Bean をリクエスト属性としてアクセス可能にするかどうかを設定します。void
setExposedContextBeanNames
(StringSE... exposedContextBeanNames) 公開することになっているコンテキスト内の Bean の名前を指定します。void
setExposePathVariables
(boolean exposePathVariables) モデルにパス変数を追加するかどうかを指定します。void
setRequestContextAttribute
(StringSE requestContextAttribute) このビューの RequestContext 属性の名前を設定します。protected void
setResponseContentType
(HttpServletRequestEE request, HttpServletResponseEE response) View.SELECTED_CONTENT_TYPE
リクエスト属性が存在し、具体的なメディア型に設定されていない限り、構成されたcontent type
にレスポンスのコンテンツ型を設定します。toString()
protected void
writeToResponse
(HttpServletResponseEE response, ByteArrayOutputStreamSE baos) 指定された一時的な OutputStream を HTTP レスポンスに書き込みます。クラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
フィールドの詳細
DEFAULT_CONTENT_TYPE
デフォルトのコンテンツ型。Bean プロパティとしてオーバーライド可能。- 関連事項:
コンストラクターの詳細
AbstractView
public AbstractView()
メソッドの詳細
setContentType
このビューのコンテンツ型を設定します。デフォルトは "text/html;charset=ISO-8859-1" です。たとえば JSP の場合のように、ビュー自体がコンテンツ型を設定すると想定される場合は、サブクラスによって無視されることがあります。
getContentType
このビューのコンテンツ型を返します。- 次で指定:
- インターフェース
View
のgetContentType
- 戻り値:
- コンテンツ型 String(オプションで文字セットを含む)、または事前定義されていない場合は
null
setRequestContextAttribute
このビューの RequestContext 属性の名前を設定します。デフォルトはなしです。getRequestContextAttribute
RequestContext 属性の名前を返します(存在する場合)。setAttributesCSV
静的属性を CSV 文字列として設定します。形式は次のとおりです。attname0={value1},attname1={value1}「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。
setAttributes
java.util.Properties
オブジェクトからこのビューの静的属性を設定します。「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。
これは、静的属性を設定する最も便利な方法です。同じ名前の値がモデルに含まれている場合、静的属性は動的属性によってオーバーライドされることに注意してください。
文字列 "value" (PropertiesEditor で解析)または XML Bean 定義の "props" 要素を入力できます。
- 関連事項:
setAttributesMap
このビューの静的属性をマップから設定します。これにより、Bean 参照など、あらゆる種類の属性値を設定できます。「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。
XML Bean 定義の「マップ」または "props" 要素を取り込むことができます。
- パラメーター:
attributes
- キーとして名前文字列、値として属性オブジェクトを持つマップ
getAttributesMap
特定のエントリを追加または上書きするオプションを使用して、Map
がこのビューの静的属性にアクセスできるようにします。attributesMap[myKey]
などを介してエントリを直接指定する場合に便利です。これは、子ビュー定義のエントリを追加またはオーバーライドする場合に特に便利です。addStaticAttribute
このビューに静的データを追加し、各ビューで公開します。「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。
render
を呼び出す前に呼び出す必要があります。- パラメーター:
name
- 公開する属性の名前value
- 公開する属性値- 関連事項:
getStaticAttributes
このビューの静的属性を返します。テストに便利です。変更できないマップを返します。これは、マップを操作するためではなく、コンテンツをチェックするためだけのものであるためです。
- 戻り値:
- このビューの静的属性
setExposePathVariables
public void setExposePathVariables(boolean exposePathVariables) モデルにパス変数を追加するかどうかを指定します。パス変数は通常、
@PathVariable
アノテーションを介して URI テンプレート変数にバインドされます。これらは事実上、型変換が適用されて型付きオブジェクト値を導出する URI テンプレート変数です。このような値は、同じ URL や他の URL へのリンクを作成するためのビューで頻繁に必要になります。モデルに追加されたパス変数は、静的属性(
setAttributes(Properties)
を参照)をオーバーライドしますが、モデルにすでに存在する属性はオーバーライドしません。デフォルトでは、このフラグは
true
に設定されています。具体的なビュー型はこれをオーバーライドできます。- パラメーター:
exposePathVariables
- パス変数を公開する場合はtrue
、それ以外の場合はfalse
isExposePathVariables
public boolean isExposePathVariables()モデルにパス変数を追加するかどうかを返します。setExposeContextBeansAsAttributes
public void setExposeContextBeansAsAttributes(boolean exposeContextBeansAsAttributes) 属性がアクセスされたら、遅延チェックを通じて、アプリケーションコンテキスト内のすべての Spring Bean をリクエスト属性としてアクセス可能にするかどうかを設定します。これにより、JSTL の
c:out
値式と同様に、JSP 2.0 ページのプレーンな${...}
式でそのようなすべての Bean にアクセスできるようになります。デフォルトは "false" です。このフラグをオンに切り替えて、リクエスト属性ネームスペース内のすべての Spring Bean を透過的に公開します。
注意 : コンテキスト Bean は、手動で追加された同じ名前のカスタムリクエストまたはセッション属性をオーバーライドします。ただし、同じ名前のモデル属性(このビューに明示的に公開されている)は、常にコンテキスト Bean をオーバーライドします。
setExposedContextBeanNames
公開することになっているコンテキスト内の Bean の名前を指定します。これが null 以外の場合、指定された Bean のみが属性として公開できます。アプリケーションコンテキストですべての Spring Bean を公開する場合は、
"exposeContextBeansAsAttributes"
フラグをオンにしますが、このプロパティの特定の Bean 名はリストしません。setBeanName
ビューの名前を設定します。トレーサビリティに役立ちます。フレームワークコードは、ビューを構築するときにこれを呼び出す必要があります。
- 次で指定:
- インターフェース
BeanNameAware
のsetBeanName
- パラメーター:
beanName
- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)
メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
getBeanName
ビューの名前を返します。ビューが正しく構成されている場合、決してnull
であってはなりません。render
public void render(@Nullable MapSE<StringSE, ?> model, HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE指定されたモデルに基づいてビューを準備し、必要に応じて静的属性と RequestContext 属性をマージします。実際のレンダリングは renderMergedOutputModel に委譲します。- 次で指定:
- インターフェース
View
のrender
- パラメーター:
model
- キーとして文字列名、値として対応するモデルオブジェクトを持つマップ (空のモデルの場合、マップはnull
にすることもできます)request
- 現在の HTTP リクエストresponse
- 彼が作成している HTTP レスポンス- 例外:
ExceptionSE
- レンダリングに失敗した場合- 関連事項:
createMergedOutputModel
protected MapSE<StringSE,ObjectSE> createMergedOutputModel(@Nullable MapSE<StringSE, ?> model, HttpServletRequestEE request, HttpServletResponseEE response) 動的な値と静的な属性を含む結合出力マップ(非null
)を作成します。動的な値は静的な属性よりも優先されます。createRequestContext
protected RequestContext createRequestContext(HttpServletRequestEE request, HttpServletResponseEE response, MapSE<StringSE, ObjectSE> model) 指定された属性名で公開する RequestContext を作成します。デフォルトの実装では、指定されたリクエストとモデルの標準 RequestContext インスタンスが作成されます。カスタムインスタンスのサブクラスでオーバーライドできます。
- パラメーター:
request
- 現在の HTTP リクエストmodel
- 静的な属性よりも動的な値が優先される、結合された出力マップ(非null
)- 戻り値:
- RequestContext インスタンス
- 関連事項:
prepareResponse
レンダリングのために指定されたレスポンスを準備します。デフォルトの実装では、HTTPS 経由でダウンロードコンテンツを送信するときに IE バグの回避策が適用されます。
- パラメーター:
request
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンス
generatesDownloadContent
protected boolean generatesDownloadContent()このビューがダウンロードコンテンツ(通常は PDF ファイルや Excel ファイルなどのバイナリコンテンツ)を生成するかどうかを返します。デフォルトの実装は
false
を返します。通常、レスポンス OutputStream を介して、クライアント側で一時キャッシュを必要とするダウンロードコンテンツを生成していることがわかっている場合、サブクラスはここでtrue
を返すことが推奨されます。getRequestToExpose
renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse)
に公開するリクエストハンドル、つまりビューを取得します。デフォルトの実装は、Spring Bean の公開の元のリクエストをリクエスト属性としてラップします(リクエストされた場合)。
- パラメーター:
originalRequest
- エンジンによって提供される元のサーブレットリクエスト- 戻り値:
- ラップされたリクエスト、または折り返しが不要な場合は元のリクエスト
- 関連事項:
renderMergedOutputModel
protected abstract void renderMergedOutputModel(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSEビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。最初のステップは、リクエストの準備です。JSP の場合、これはモデルオブジェクトをリクエスト属性として設定することを意味します。2 番目のステップは、たとえば RequestDispatcher を介した JSP を含む、実際のビューのレンダリングです。
- パラメーター:
model
- 静的な属性よりも動的な値が優先される、結合された出力マップ(非null
)request
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンス- 例外:
ExceptionSE
- レンダリングに失敗した場合
exposeModelAsRequestAttributes
protected void exposeModelAsRequestAttributes(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request) throws ExceptionSE指定されたマップ内のモデルオブジェクトをリクエスト属性として公開します。名前はモデルマップから取得されます。この方法は、RequestDispatcher
EE が到達可能なすべてのリソースに適しています。- パラメーター:
model
- 公開するモデルオブジェクトのマップrequest
- 現在の HTTP リクエスト- 例外:
ExceptionSE
createTemporaryOutputStream
このビューの一時的な OutputStream を作成します。これは通常、コンテンツを実際に HTTP レスポンスに書き込む前に一時ストリームからコンテンツ長ヘッダーを設定するための IE の回避策として使用されます。
writeToResponse
protected void writeToResponse(HttpServletResponseEE response, ByteArrayOutputStreamSE baos) throws IOExceptionSE 指定された一時的な OutputStream を HTTP レスポンスに書き込みます。- パラメーター:
response
- 現在の HTTP レスポンスbaos
- 書き込む一時的な OutputStream- 例外:
IOExceptionSE
- 書き込み / フラッシュが失敗した場合
setResponseContentType
View.SELECTED_CONTENT_TYPE
リクエスト属性が存在し、具体的なメディア型に設定されていない限り、構成されたcontent type
にレスポンスのコンテンツ型を設定します。toString
formatViewName