クラス AbstractView

実装されたすべてのインターフェース:
AwareBeanNameAwareApplicationContextAwareServletContextAwareView
既知の直属サブクラス
AbstractFeedViewAbstractJackson2ViewAbstractPdfViewAbstractUrlBasedViewAbstractXlsViewMarshallingView

public abstract class AbstractView extends WebApplicationObjectSupport implements View, BeanNameAware
View 実装の抽象基本クラス。サブクラスは JavaBeans にして、Spring 管理の Bean インスタンスとして便利に構成できるようにする必要があります。

静的属性をサポートし、さまざまな方法でビューで使用できるようにします。静的属性は、レンダリング操作ごとに、指定された動的属性(コントローラーが返したモデル)とマージされます。

WebApplicationObjectSupport を拡張します。これは、一部のビューに役立ちます。サブクラスは、実際のレンダリングを実装する必要があります。

作成者:
Rod Johnson, Juergen Hoeller
関連事項:
  • フィールドの詳細

    • DEFAULT_CONTENT_TYPE

      public static final StringSE DEFAULT_CONTENT_TYPE
      デフォルトのコンテンツ型。Bean プロパティとしてオーバーライド可能。
      関連事項:
  • コンストラクターの詳細

    • AbstractView

      public AbstractView()
  • メソッドの詳細

    • setContentType

      public void setContentType(@Nullable StringSE contentType)
      このビューのコンテンツ型を設定します。デフォルトは "text/html;charset=ISO-8859-1" です。

      ビュー自体がコンテンツ型を設定すると想定される場合、サブクラスによって無視される場合があります。JSP の場合。

    • getContentType

      @Nullable public StringSE getContentType()
      このビューのコンテンツ型を返します。
      次で指定:
      インターフェース ViewgetContentType 
      戻り値:
      コンテンツ型 String(オプションで文字セットを含む)、または事前定義されていない場合は null 
    • setRequestContextAttribute

      public void setRequestContextAttribute(@Nullable StringSE requestContextAttribute)
      このビューの RequestContext 属性の名前を設定します。デフォルトはなしです。
    • getRequestContextAttribute

      @Nullable public StringSE getRequestContextAttribute()
      RequestContext 属性の名前を返します(存在する場合)。
    • setAttributesCSV

      public void setAttributesCSV(@Nullable StringSE propString) throws IllegalArgumentExceptionSE
      静的属性を CSV 文字列として設定します。形式は次のとおりです。attname0={value1},attname1={value1}

      「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。

      例外:
      IllegalArgumentExceptionSE
    • setAttributes

      public void setAttributes(PropertiesSE attributes)
      java.util.Properties オブジェクトからこのビューの静的属性を設定します。

      「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。

      これは、静的属性を設定する最も便利な方法です。同じ名前の値がモデルに含まれている場合、静的属性は動的属性によってオーバーライドされることに注意してください。

      文字列 "value" (PropertiesEditor で解析)または XML Bean 定義の "props" 要素を入力できます。

      関連事項:
    • setAttributesMap

      public void setAttributesMap(@Nullable MapSE<StringSE,?> attributes)
      このビューの静的属性をマップから設定します。これにより、Bean 参照など、あらゆる種類の属性値を設定できます。

      「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。

      XML Bean 定義の「マップ」または "props" 要素を取り込むことができます。

      パラメーター:
      attributes - キーとして名前文字列、値として属性オブジェクトを持つマップ
    • getAttributesMap

      public MapSE<StringSE,ObjectSE> getAttributesMap()
      特定のエントリを追加または上書きするオプションを使用して、Map がこのビューの静的属性にアクセスできるようにします。

      attributesMap[myKey] などを介してエントリを直接指定する場合に便利です。これは、子ビュー定義のエントリを追加またはオーバーライドする場合に特に便利です。

    • addStaticAttribute

      public void addStaticAttribute(StringSE name, ObjectSE value)
      このビューに静的データを追加し、各ビューで公開します。

      「静的」属性は、View インスタンス構成で指定される固定属性です。一方、「動的」属性は、モデルの一部として渡される値です。

      render を呼び出す前に呼び出す必要があります。

      パラメーター:
      name - 公開する属性の名前
      value - 公開する属性値
      関連事項:
    • getStaticAttributes

      public MapSE<StringSE,ObjectSE> 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

      public void setExposedContextBeanNames(StringSE... exposedContextBeanNames)
      公開することになっているコンテキスト内の Bean の名前を指定します。これが null 以外の場合、指定された Bean のみが属性として公開できます。

      アプリケーションコンテキストですべての Spring Bean を公開する場合は、"exposeContextBeansAsAttributes" フラグをオンにしますが、このプロパティの特定の Bean 名はリストしません。

    • setBeanName

      public void setBeanName(@Nullable StringSE beanName)
      ビューの名前を設定します。トレーサビリティに役立ちます。

      フレームワークコードは、ビューを構築するときにこれを呼び出す必要があります。

      次で指定:
      インターフェース BeanNameAwaresetBeanName 
      パラメーター:
      beanName - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
    • getBeanName

      @Nullable public StringSE getBeanName()
      ビューの名前を返します。ビューが正しく構成されている場合、決して null であってはなりません。
    • render

      public void render(@Nullable MapSE<StringSE,?> model, HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE
      指定されたモデルを指定してビューを準備し、必要に応じて静的属性と RequestContext 属性をマージします。実際のレンダリングのために renderMergedOutputModel へのデリゲート。
      次で指定:
      インターフェース Viewrender 
      パラメーター:
      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

      protected void prepareResponse(HttpServletRequestEE request, HttpServletResponseEE response)
      レンダリングのために指定されたレスポンスを準備します。

      デフォルトの実装では、HTTPS 経由でダウンロードコンテンツを送信するときに IE バグの回避策が適用されます。

      パラメーター:
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
    • generatesDownloadContent

      protected boolean generatesDownloadContent()
      このビューがダウンロードコンテンツ(通常は PDF ファイルや Excel ファイルなどのバイナリコンテンツ)を生成するかどうかを返します。

      デフォルトの実装は false を返します。通常、レスポンス OutputStream を介して、クライアント側で一時キャッシュを必要とするダウンロードコンテンツを生成していることがわかっている場合、サブクラスはここで true を返すことが推奨されます。

      関連事項:
    • getRequestToExpose

      protected HttpServletRequestEE getRequestToExpose(HttpServletRequestEE originalRequest)
      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
      指定されたマップ内のモデルオブジェクトをリクエスト属性として公開します。名前はモデルマップから取得されます。この方法は、RequestDispatcherEE が到達可能なすべてのリソースに適しています。
      パラメーター:
      model - 公開するモデルオブジェクトのマップ
      request - 現在の HTTP リクエスト
      例外:
      ExceptionSE
    • createTemporaryOutputStream

      protected ByteArrayOutputStreamSE createTemporaryOutputStream()
      このビューの一時的な OutputStream を作成します。

      これは通常、コンテンツを実際に HTTP レスポンスに書き込む前に一時ストリームからコンテンツ長ヘッダーを設定するための IE の回避策として使用されます。

    • writeToResponse

      protected void writeToResponse(HttpServletResponseEE response, ByteArrayOutputStreamSE baos) throws IOExceptionSE
      指定された一時的な OutputStream を HTTP レスポンスに書き込みます。
      パラメーター:
      response - 現在の HTTP レスポンス
      baos - 書き込む一時的な OutputStream
      例外:
      IOExceptionSE - 書き込み / フラッシュが失敗した場合
    • setResponseContentType

      protected void setResponseContentType(HttpServletRequestEE request, HttpServletResponseEE response)
      View.SELECTED_CONTENT_TYPE リクエスト属性が存在し、具体的なメディア型に設定されていない限り、構成された content type にレスポンスのコンテンツ型を設定します。
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString 
    • formatViewName

      protected StringSE formatViewName()