クラス InternalResourceView

実装されているすべてのインターフェース:
Aware, BeanNameAware, InitializingBean, ApplicationContextAware, ServletContextAware, View
既知の直属サブクラス
JstlView

public class InternalResourceView extends AbstractUrlBasedView
同じ Web アプリケーション内の JSP またはその他のリソースのラッパーです。モデルオブジェクトをリクエスト属性として公開し、RequestDispatcher を使用して指定されたリソース URL にリクエストを転送します。

このビューの URL は、RequestDispatcher の forward または include メソッドに適した、Web アプリケーション内のリソースを指定することになっています。

すでに含まれているリクエスト内またはすでにコミットされているレスポンス内で動作している場合、このビューは転送ではなくインクルードにフォールバックします。これは、ビューをレンダリングする前に response.flushBuffer() (レスポンスをコミットする)を呼び出すことによって実施できます。

DispatcherServlet コンテキスト定義の観点から見ると、InternalResourceViewResolver の一般的な使用箇所は次のようになります。

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"/>
  <property name="suffix" value=".jsp"/>
</bean>
ハンドラーから返されるすべてのビュー名は、デフォルトでこのビュークラスを使用して JSP リソース (例: "myView" → "/WEB-INF/jsp/myView.jsp") に変換されます。
作成者:
Rod Johnson, Juergen Hoeller, Rob Harrop
関連事項:
  • RequestDispatcher.forward(ServletRequest, ServletResponse)
  • RequestDispatcher.include(ServletRequest, ServletResponse)
  • ServletResponse.flushBuffer()
  • InternalResourceViewResolver
  • JstlView
  • コンストラクターの詳細

    • InternalResourceView

      public InternalResourceView()
      Bean として使用するコンストラクター。
      関連事項:
    • InternalResourceView

      public InternalResourceView(StringSE url)
      指定された URL で新しい InternalResourceView を作成します。
      パラメーター:
      url - 転送先の URL
      関連事項:
    • InternalResourceView

      public InternalResourceView(StringSE url, boolean alwaysInclude)
      指定された URL で新しい InternalResourceView を作成します。
      パラメーター:
      url - 転送先の URL
      alwaysInclude - ビューに転送するのではなく、常にビューを含めるかどうか
  • メソッドの詳細

    • setAlwaysInclude

      public void setAlwaysInclude(boolean alwaysInclude)
      ビューに転送するのではなく、常にビューを含めるかどうかを指定します。

      デフォルトは "false" です。転送が可能であっても、このフラグをオンにしてサーブレットインクルードの使用を強制します。

      関連事項:
    • setPreventDispatchLoop

      public void setPreventDispatchLoop(boolean preventDispatchLoop)
      現在のハンドラーパスへのディスパッチを明示的に禁止するかどうかを設定します。

      デフォルトは "false" です。現在のハンドラーパスへのディスパッチが根本的なエラーである、コンベンショナルベースのビューの場合は、これを "true" に切り替えます。

    • isContextRequired

    • renderMergedOutputModel

      protected void renderMergedOutputModel(MapSE<StringSE,ObjectSE> model, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE
      指定されたモデルの内部リソースをレンダリングします。これには、モデルをリクエスト属性として設定することが含まれます。
      次で指定:
      クラス AbstractViewrenderMergedOutputModel 
      パラメーター:
      model - 静的な属性よりも動的な値が優先される、結合された出力マップ(非 null
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      例外:
      ExceptionSE - レンダリングに失敗した場合
    • exposeHelpers

      protected void exposeHelpers(jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE
      各レンダリング操作に固有のヘルパーを公開します。これは、異なるレンダリング操作が互いのコンテキストなどを上書きできないようにするために必要です。

      renderMergedOutputModel(Map, HttpServletRequest, HttpServletResponse) によって呼び出されます。デフォルトの実装は空です。このメソッドをオーバーライドして、カスタムヘルパーをリクエスト属性として追加できます。

      パラメーター:
      request - 現在の HTTP リクエスト
      例外:
      ExceptionSE - 属性の追加中に致命的なエラーが発生した場合
      関連事項:
    • prepareForRendering

      protected StringSE prepareForRendering(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws ExceptionSE
      レンダリングの準備をし、転送する(または含める)リクエストディスパッチャーのパスを決定します。

      この実装は単に構成された URL を返します。サブクラスはこれをオーバーライドして、レンダリングするリソースを決定できます。通常は、URL を別の方法で解釈します。

      パラメーター:
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      戻り値:
      使用するリクエストディスパッチャーパス
      例外:
      ExceptionSE - 準備が失敗した場合
      関連事項:
    • getRequestDispatcher

      protected @Nullable jakarta.servlet.RequestDispatcher getRequestDispatcher(jakarta.servlet.http.HttpServletRequest request, StringSE path)
      フォワード / インクルードに使用する RequestDispatcher を取得します。

      デフォルトの実装では、単に ServletRequest.getRequestDispatcher(String) を呼び出します。サブクラスでオーバーライドできます。

      パラメーター:
      request - 現在の HTTP リクエスト
      path - ターゲット URL (prepareForRendering(HttpServletRequest, HttpServletResponse) から返される)
      戻り値:
      対応する RequestDispatcher
    • useInclude

      protected boolean useInclude(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      RequestDispatcher の include または forward メソッドのどちらを使用するかを決定します。

      インクルードリクエストを示すインクルード URI 属性がリクエストに含まれているかどうか、およびレスポンスがすでにコミットされているかどうかのチェックを実行します。どちらの場合も、転送が不可能になるため、インクルードが実行されます。

      パラメーター:
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      戻り値:
      インクルードには true、フォワードには false 
      関連事項: