クラス AbstractView
- 実装されているすべてのインターフェース:
Aware, BeanNameAware, ApplicationContextAware, ServletContextAware, View
- 既知の直属サブクラス
AbstractFeedView, AbstractJackson2View, AbstractJacksonView, AbstractPdfView, AbstractUrlBasedView, AbstractXlsView, MarshallingView
View 実装の抽象基本クラス。サブクラスは JavaBeans にして、Spring 管理の Bean インスタンスとして便利に構成できるようにする必要があります。静的属性をサポートし、さまざまな方法でビューで使用できるようにします。静的属性は、レンダリング操作ごとに、指定された動的属性(コントローラーが返したモデル)とマージされます。
WebApplicationObjectSupport を拡張します。これは、一部のビューに役立ちます。サブクラスは、実際のレンダリングを実装する必要があります。
- 作成者:
- Rod Johnson, Juergen Hoeller
- 関連事項:
フィールドのサマリー
フィールドクラス ApplicationObjectSupport から継承されたフィールド
loggerインターフェース View から継承されたフィールド
PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPEコンストラクターの概要
コンストラクター方法の概要
修飾子と型メソッド説明voidaddStaticAttribute(StringSE name, ObjectSE value) このビューに静的データを追加し、各ビューで公開します。createMergedOutputModel(@Nullable MapSE<StringSE, ?> model, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 動的な値と静的な属性を含む結合出力マップ(非null)を作成します。protected RequestContextcreateRequestContext(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, MapSE<StringSE, ObjectSE> model) 指定された属性名で公開する RequestContext を作成します。protected ByteArrayOutputStreamSEこのビューの一時的な OutputStream を作成します。protected voidexposeModelAsRequestAttributes(MapSE<StringSE, ObjectSE> model, jakarta.servlet.http.HttpServletRequest request) 指定されたマップ内のモデルオブジェクトをリクエスト属性として公開します。protected StringSEprotected booleanこのビューがダウンロードコンテンツ(通常は PDF ファイルや Excel ファイルなどのバイナリコンテンツ)を生成するかどうかを返します。特定のエントリを追加または上書きするオプションを使用して、Mapがこのビューの静的属性にアクセスできるようにします。ビューの名前を返します。このビューのコンテンツ型を返します。RequestContext 属性の名前を返します(存在する場合)。protected jakarta.servlet.http.HttpServletRequestgetRequestToExpose(jakarta.servlet.http.HttpServletRequest originalRequest) renderMergedOutputModel(Map, HttpServletRequest, HttpServletResponse)に公開するリクエストハンドルを取得します。このビューの静的属性を返します。booleanモデルにパス変数を追加するかどうかを返します。protected voidprepareResponse(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) レンダリングのために指定されたレスポンスを準備します。voidrender(@Nullable MapSE<StringSE, ?> model, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 指定されたモデルを指定してビューを準備し、必要に応じて静的属性と RequestContext 属性をマージします。protected abstract voidrenderMergedOutputModel(MapSE<StringSE, ObjectSE> model, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) ビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。voidsetAttributes(PropertiesSE attributes) java.util.Propertiesオブジェクトからこのビューの静的属性を設定します。voidsetAttributesCSV(@Nullable StringSE propString) 静的属性を CSV 文字列として設定します。voidsetAttributesMap(@Nullable MapSE<StringSE, ?> attributes) このビューの静的属性をマップから設定します。voidsetBeanName(@Nullable StringSE beanName) ビューの名前を設定します。voidsetContentType(@Nullable StringSE contentType) このビューのコンテンツ型を設定します。voidsetExposeContextBeansAsAttributes(boolean exposeContextBeansAsAttributes) 属性がアクセスされたら、遅延チェックを通じて、アプリケーションコンテキスト内のすべての Spring Bean をリクエスト属性としてアクセス可能にするかどうかを設定します。voidsetExposedContextBeanNames(StringSE... exposedContextBeanNames) 公開することになっているコンテキスト内の Bean の名前を指定します。voidsetExposePathVariables(boolean exposePathVariables) モデルにパス変数を追加するかどうかを指定します。voidsetRequestContextAttribute(@Nullable StringSE requestContextAttribute) このビューの RequestContext 属性の名前を設定します。protected voidsetResponseContentType(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) View.SELECTED_CONTENT_TYPEリクエスト属性が存在し、具体的なメディア型に設定されていない限り、構成されたcontent typeにレスポンスのコンテンツ型を設定します。toString()protected voidwriteToResponse(jakarta.servlet.http.HttpServletResponse response, ByteArrayOutputStreamSE baos) 指定された一時的な OutputStream を HTTP レスポンスに書き込みます。クラス WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
フィールドの詳細
DEFAULT_CONTENT_TYPE
コンストラクターの詳細
AbstractView
public AbstractView()
メソッドの詳細
setContentType
getContentType
このビューのコンテンツ型を返します。- 次で指定:
- インターフェース
ViewのgetContentType - 戻り値:
- コンテンツ型 String(オプションで文字セットを含む)、または事前定義されていない場合は
null
setRequestContextAttribute
getRequestContextAttribute
setAttributesCSV
静的属性を CSV 文字列として設定します。形式は次のとおりです。attname0={value1},attname1={value1}「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。
setAttributes
java.util.Propertiesオブジェクトからこのビューの静的属性を設定します。「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。
これは、静的属性を設定する最も便利な方法です。同じ名前の値がモデルに含まれている場合、静的属性は動的属性によってオーバーライドされることに注意してください。
文字列 "value" (PropertiesEditor で解析)または XML Bean 定義の "props" 要素を入力できます。
- 関連事項:
setAttributesMap
getAttributesMap
addStaticAttribute
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
render
public void render(@Nullable MapSE<StringSE, ?> model, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE指定されたモデルに基づいてビューを準備し、必要に応じて静的属性と RequestContext 属性をマージします。実際のレンダリングは renderMergedOutputModel に委譲します。- 次で指定:
- インターフェース
Viewのrender - パラメーター:
model- キーとして文字列名、値として対応するモデルオブジェクトを持つマップ (空のモデルの場合、マップはnullにすることもできます)request- 現在の HTTP リクエストresponse- 彼が作成している HTTP レスポンス- 例外:
ExceptionSE- レンダリングに失敗した場合- 関連事項:
createMergedOutputModel
createRequestContext
protected RequestContext createRequestContext(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, MapSE<StringSE, ObjectSE> model) 指定された属性名で公開する RequestContext を作成します。デフォルトの実装では、指定されたリクエストとモデルの標準 RequestContext インスタンスが作成されます。カスタムインスタンスのサブクラスでオーバーライドできます。
- パラメーター:
request- 現在の HTTP リクエストmodel- 静的な属性よりも動的な値が優先される、結合された出力マップ(非null)- 戻り値:
- RequestContext インスタンス
- 関連事項:
prepareResponse
protected void prepareResponse(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) レンダリングのために指定されたレスポンスを準備します。デフォルトの実装では、HTTPS 経由でダウンロードコンテンツを送信するときに IE バグの回避策が適用されます。
- パラメーター:
request- 現在の HTTP リクエストresponse- 現在の HTTP レスポンス
generatesDownloadContent
protected boolean generatesDownloadContent()このビューがダウンロードコンテンツ(通常は PDF ファイルや Excel ファイルなどのバイナリコンテンツ)を生成するかどうかを返します。デフォルトの実装は
falseを返します。通常、レスポンス OutputStream を介して、クライアント側で一時キャッシュを必要とするダウンロードコンテンツを生成していることがわかっている場合、サブクラスはここでtrueを返すことが推奨されます。- 関連事項:
getRequestToExpose
protected jakarta.servlet.http.HttpServletRequest getRequestToExpose(jakarta.servlet.http.HttpServletRequest originalRequest) renderMergedOutputModel(Map, HttpServletRequest, HttpServletResponse)に公開するリクエストハンドル、つまりビューを取得します。デフォルトの実装は、Spring Bean の公開の元のリクエストをリクエスト属性としてラップします(リクエストされた場合)。
- パラメーター:
originalRequest- エンジンによって提供される元のサーブレットリクエスト- 戻り値:
- ラップされたリクエスト、または折り返しが不要な場合は元のリクエスト
- 関連事項:
renderMergedOutputModel
protected abstract void renderMergedOutputModel(MapSE<StringSE, ObjectSE> model, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSEビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。最初のステップは、リクエストの準備です。JSP の場合、これはモデルオブジェクトをリクエスト属性として設定することを意味します。2 番目のステップは、たとえば RequestDispatcher を介した JSP を含む、実際のビューのレンダリングです。
- パラメーター:
model- 静的な属性よりも動的な値が優先される、結合された出力マップ(非null)request- 現在の HTTP リクエストresponse- 現在の HTTP レスポンス- 例外:
ExceptionSE- レンダリングに失敗した場合
exposeModelAsRequestAttributes
protected void exposeModelAsRequestAttributes(MapSE<StringSE, ObjectSE> model, jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE指定されたマップ内のモデルオブジェクトをリクエスト属性として公開します。名前はモデルマップから取得されます。このメソッドは、RequestDispatcherでアクセス可能なすべてのリソースに適しています。- パラメーター:
model- 公開するモデルオブジェクトのマップrequest- 現在の HTTP リクエスト- 例外:
ExceptionSE
createTemporaryOutputStream
このビューの一時的な OutputStream を作成します。これは通常、コンテンツを実際に HTTP レスポンスに書き込む前に一時ストリームからコンテンツ長ヘッダーを設定するための IE の回避策として使用されます。
writeToResponse
protected void writeToResponse(jakarta.servlet.http.HttpServletResponse response, ByteArrayOutputStreamSE baos) throws IOExceptionSE 指定された一時的な OutputStream を HTTP レスポンスに書き込みます。- パラメーター:
response- 現在の HTTP レスポンスbaos- 書き込む一時的な OutputStream- 例外:
IOExceptionSE- 書き込み / フラッシュが失敗した場合
setResponseContentType
protected void setResponseContentType(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) View.SELECTED_CONTENT_TYPEリクエスト属性が存在し、具体的なメディア型に設定されていない限り、構成されたcontent typeにレスポンスのコンテンツ型を設定します。toString
formatViewName