クラス RedirectView
- 実装されたすべてのインターフェース:
Aware
、BeanNameAware
、InitializingBean
、ApplicationContextAware
、ServletContextAware
、SmartView
、View
isEligibleProperty(String, Object)
メソッドをオーバーライドすることで変更できます。 このビューの URL は、HTTP リダイレクト URL であることが想定されています。つまり、HttpServletResponse の sendRedirect
メソッドに適しています。これは、HTTP 1.0 フラグがオンの場合、または HTTP 303 コードの送信を介してリダイレクトを実際に行うものです -HTTP 1.0 互換性の場合フラグはオフです。
"contextRelative" フラグのデフォルト値はオフですが、ほとんどの場合、これを true に設定するとよいことに注意してください。フラグがオフの場合、"/" で始まる URL は Web サーバーのルートに対して相対的であると見なされ、フラグがオンの場合、Web アプリケーションのルートに対して相対的であると見なされます。ほとんどの Web アプリケーションは、コンテキストパスが実際に何であるかを知らないか、気にしないため、このフラグを true に設定し、Web アプリケーションのルートに対して相対的であると見なされるパスを送信する方がはるかに適切です。
ポートレット環境でこのリダイレクトビューを使用する場合の注意 : コントローラーがポートレット sendRedirect
制約を遵守していることを確認してください。
- 作成者:
- Rod Johnson, Juergen Hoeller, Colin Sampaleanu, Sam Brannen, Arjen Poutsma, Rossen Stoyanchev
- 関連事項:
フィールドサマリー
クラス 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
コンストラクターのサマリー
コンストラクター説明Bean として使用するコンストラクター。RedirectView
(StringSE url) 指定された URL で新しい RedirectView を作成します。RedirectView
(StringSE url, boolean contextRelative) 指定された URL で新しい RedirectView を作成します。RedirectView
(StringSE url, boolean contextRelative, boolean http10Compatible) 指定された URL で新しい RedirectView を作成します。RedirectView
(StringSE url, boolean contextRelative, boolean http10Compatible, boolean exposeModelAttributes) 指定された URL で新しい RedirectView を作成します。方法の概要
修飾子と型メソッド説明protected void
appendCurrentQueryParams
(StringBuilderSE targetUrl, HttpServletRequestEE request) 現在のリクエストのクエリ文字列をターゲットリダイレクト URL に追加します。protected void
appendQueryProperties
(StringBuilderSE targetUrl, MapSE<StringSE, ObjectSE> model, StringSE encodingScheme) リダイレクト URL にクエリプロパティを追加します。protected final StringSE
createTargetUrl
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request) 最初にリダイレクト文字列が URI テンプレートであるかどうかを確認してターゲット URL を作成し、指定されたモデルでそれを展開してから、オプションでクエリ文字列パラメーターとして単純型モデル属性を追加します。StringSE[]
getHosts()
設定されたアプリケーションホストを返します。protected HttpStatusCode
getHttp11StatusCode
(HttpServletRequestEE request, HttpServletResponseEE response, StringSE targetUrl) HTTP 1.1 互換リクエストに使用するステータスコードを決定します。protected boolean
ApplicationContext は、RedirectView には厳密には必要ありません。protected boolean
isEligibleProperty
(StringSE key, ObjectSE value) 指定されたモデル要素をクエリプロパティとして公開するかどうかを決定します。protected boolean
isEligibleValue
(ObjectSE value) 指定されたモデル要素の値が公開の対象かどうかを判断します。boolean
現在の URL のクエリパラメーターを伝達するかどうか。boolean
このビューがリダイレクトを実行することを示す "true" を返します。protected boolean
isRemoteHost
(StringSE targetUrl) 指定された targetUrl に「外部」システムのホストがあるかどうか。その場合、HttpServletResponse.encodeRedirectURL(java.lang.String)
EE は適用されません。queryProperties
(MapSE<StringSE, ObjectSE> model) appendQueryProperties(java.lang.StringBuilder, java.util.Map<java.lang.String, java.lang.Object>, java.lang.String)
によって文字列化、URL エンコード、フォーマットされるクエリ文字列の名前と値のペアを決定します。protected void
renderMergedOutputModel
(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) モデルをリクエストパラメーターに変換し、指定された URL にリダイレクトします。protected StringBuilderSE
replaceUriTemplateVariables
(StringSE targetUrl, MapSE<StringSE, ObjectSE> model, MapSE<StringSE, StringSE> currentUriVariables, StringSE encodingScheme) ターゲット URL の URI テンプレート変数を、現在のリクエストからのエンコードされたモデル属性または URI 変数に置き換えます。protected void
sendRedirect
(HttpServletRequestEE request, HttpServletResponseEE response, StringSE targetUrl, boolean http10Compatible) HTTP クライアントにリダイレクトを送り返します。void
setContextRelative
(boolean contextRelative) スラッシュ("/")で始まる特定の URL を、現在の ServletContext を基準にして解釈するかどうかを設定します。void
setEncodingScheme
(StringSE encodingScheme) このビューのコード化スキームを設定します。void
setExpandUriTemplateVariables
(boolean expandUriTemplateVariables) リダイレクト URL を URI テンプレートとして扱うかどうか。void
setExposeModelAttributes
(boolean exposeModelAttributes) モデル属性を HTTP クエリパラメーターとして公開するかどうかを示すexposeModelAttributes
フラグを設定します。void
アプリケーションに関連付けられた 1 つ以上のホストを構成します。void
setHttp10Compatible
(boolean http10Compatible) HTTP 1.0 クライアントとの互換性を維持するかどうかを設定します。void
setPropagateQueryParams
(boolean propagateQueryParams) true
に設定すると、現在の URL のクエリ文字列が追加され、リダイレクトされた URL に伝達されます。void
setStatusCode
(HttpStatusCode statusCode) このビューのステータスコードを設定します。protected StringSE
updateTargetUrl
(StringSE targetUrl, MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) 登録されているRequestDataValueProcessor
がある場合は検索して、リダイレクトターゲット URL を更新できるようにします。protected StringSE
指定されたエンコードスキームを使用して、指定された入力文字列を URL エンコードします。クラス org.springframework.web.servlet.view.AbstractUrlBasedView から継承されたメソッド
afterPropertiesSet, checkResource, 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, initServletContext, setServletContext
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSE
インターフェース org.springframework.web.servlet.SmartView から継承されたメソッド
resolveNestedViews
インターフェース org.springframework.web.servlet.View から継承されたメソッド
getContentType, render
コンストラクターの詳細
RedirectView
public RedirectView()Bean として使用するコンストラクター。RedirectView
指定された URL で新しい RedirectView を作成します。指定された URL は、現在の ServletContext に対してではなく、Web サーバーに対するものと見なされます。
- パラメーター:
url
- リダイレクト先の URL- 関連事項:
RedirectView
指定された URL で新しい RedirectView を作成します。- パラメーター:
url
- リダイレクト先の URLcontextRelative
- 指定された URL を現在の ServletContext を基準にして解釈するかどうか
RedirectView
指定された URL で新しい RedirectView を作成します。- パラメーター:
url
- リダイレクト先の URLcontextRelative
- 指定された URL を現在の ServletContext を基準にして解釈するかどうかhttp10Compatible
- HTTP 1.0 クライアントとの互換性を維持するかどうか
RedirectView
public RedirectView(StringSE url, boolean contextRelative, boolean http10Compatible, boolean exposeModelAttributes) 指定された URL で新しい RedirectView を作成します。- パラメーター:
url
- リダイレクト先の URLcontextRelative
- 指定された URL を現在の ServletContext を基準にして解釈するかどうかhttp10Compatible
- HTTP 1.0 クライアントとの互換性を維持するかどうかexposeModelAttributes
- モデル属性をクエリパラメーターとして公開する必要があるかどうか
メソッドの詳細
setContextRelative
public void setContextRelative(boolean contextRelative) スラッシュ("/")で始まる特定の URL を、現在の ServletContext を基準として、つまり Web アプリケーションのルートを基準として解釈するかどうかを設定します。デフォルトは「false」: スラッシュで始まる URL は、絶対的なものとして解釈されます。つまり、そのまま解釈されます。"true" の場合、このような場合、コンテキストパスが URL の前に付加されます。
setHttp10Compatible
public void setHttp10Compatible(boolean http10Compatible) HTTP 1.0 クライアントとの互換性を維持するかどうかを設定します。デフォルトの実装では、これにより HTTP ステータスコード 302 が強制されます。つまり、
HttpServletResponse.sendRedirect
に委譲されます。これをオフにすると、HTTP 1.1 クライアントの正しいコードである HTTP ステータスコード 303 が送信されますが、HTTP 1.0 クライアントでは認識されません。多くの HTTP 1.1 クライアントは、302 を 303 のように扱い、違いはありません。ただし、POST リクエストの後でリダイレクトする場合、一部のクライアントは 303 に依存します。このようなシナリオでは、このフラグをオフにしてください。
setExposeModelAttributes
public void setExposeModelAttributes(boolean exposeModelAttributes) モデル属性を HTTP クエリパラメーターとして公開するかどうかを示すexposeModelAttributes
フラグを設定します。デフォルトは
true
です。setEncodingScheme
このビューのコード化スキームを設定します。デフォルトはリクエストのコード化スキームです(特に指定されていない場合は ISO-8859-1 です)。
setStatusCode
このビューのステータスコードを設定します。デフォルトでは、
http10Compatible
フラグの値に応じて、302/303 を送信します。setExpandUriTemplateVariables
public void setExpandUriTemplateVariables(boolean expandUriTemplateVariables) リダイレクト URL を URI テンプレートとして扱うかどうか。リダイレクト URL にオープンおよびクローズの波括弧 "{"、"}" が含まれていて、URI 変数として解釈させたくない場合は、このフラグをfalse
に設定します。デフォルトは
true
です。setPropagateQueryParams
public void setPropagateQueryParams(boolean propagateQueryParams) true
に設定すると、現在の URL のクエリ文字列が追加され、リダイレクトされた URL に伝達されます。デフォルトは
false
です。- 導入:
- 4.1
isPropagateQueryProperties
public boolean isPropagateQueryProperties()現在の URL のクエリパラメーターを伝達するかどうか。- 導入:
- 4.1
setHosts
アプリケーションに関連付けられた 1 つ以上のホストを構成します。他のすべてのホストは外部ホストと見なされます。実際、このプロパティは、ホストがあり、そのホストが既知のホストとしてリストされていない URL に対して、
HttpServletResponse.encodeRedirectURL(java.lang.String)
EE を介したエンコーディングをオフにする方法を提供します。設定されていない場合(デフォルト)、すべての URL がレスポンスを通じてエンコードされます。
- パラメーター:
hosts
- 1 つ以上のアプリケーションホスト- 導入:
- 4.3
getHosts
設定されたアプリケーションホストを返します。- 導入:
- 4.3
isRedirectView
public boolean isRedirectView()このビューがリダイレクトを実行することを示す "true" を返します。- 次で指定:
- インターフェース
SmartView
のisRedirectView
isContextRequired
protected boolean isContextRequired()ApplicationContext は、RedirectView には厳密には必要ありません。- オーバーライド:
- クラス
WebApplicationObjectSupport
のisContextRequired
- 関連事項:
renderMergedOutputModel
protected void renderMergedOutputModel(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) throws IOExceptionSEモデルをリクエストパラメーターに変換し、指定された URL にリダイレクトします。- 次で指定:
- クラス
AbstractView
のrenderMergedOutputModel
- パラメーター:
model
- 静的な属性よりも動的な値が優先される、結合された出力マップ(非null
)request
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンス- 例外:
IOExceptionSE
- 関連事項:
createTargetUrl
protected final StringSE createTargetUrl(MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request) throws UnsupportedEncodingExceptionSE最初にリダイレクト文字列が URI テンプレートであるかどうかを確認してターゲット URL を作成し、指定されたモデルでそれを展開してから、オプションでクエリ文字列パラメーターとして単純型モデル属性を追加します。replaceUriTemplateVariables
protected StringBuilderSE replaceUriTemplateVariables(StringSE targetUrl, MapSE<StringSE, ObjectSE> model, MapSE<StringSE, throws UnsupportedEncodingExceptionSEStringSE> currentUriVariables, StringSE encodingScheme) ターゲット URL の URI テンプレート変数を、現在のリクエストからのエンコードされたモデル属性または URI 変数に置き換えます。URL で参照されているモデル属性がモデルから削除されます。- パラメーター:
targetUrl
- リダイレクト URLmodel
- モデル属性を含むマップcurrentUriVariables
- 使用する現在のリクエスト URI 変数encodingScheme
- 使用するコード化スキーム- 例外:
UnsupportedEncodingExceptionSE
- 文字列のエンコードに失敗した場合
appendCurrentQueryParams
現在のリクエストのクエリ文字列をターゲットリダイレクト URL に追加します。- パラメーター:
targetUrl
- プロパティを追加する StringBuilderrequest
- 現在のリクエスト- 導入:
- 4.1
appendQueryProperties
protected void appendQueryProperties(StringBuilderSE targetUrl, MapSE<StringSE, ObjectSE> model, StringSE encodingScheme) throws UnsupportedEncodingExceptionSEクエリのプロパティをリダイレクト URL に追加します。モデル属性をクエリプロパティとして文字列化、URL エンコード、フォーマットします。- パラメーター:
targetUrl
- プロパティを追加する StringBuildermodel
- モデル属性を含むマップencodingScheme
- 使用するコード化スキーム- 例外:
UnsupportedEncodingExceptionSE
- 文字列のエンコードに失敗した場合- 関連事項:
queryProperties
appendQueryProperties(java.lang.StringBuilder, java.util.Map<java.lang.String, java.lang.Object>, java.lang.String)
によって文字列化、URL エンコード、フォーマットされるクエリ文字列の名前と値のペアを決定します。この実装では、デフォルトで文字列、プリミティブ、プリミティブラッパーのみを受け入れ、各要素の
isEligibleProperty(String, Object)
をチェックすることでモデルをフィルタリングします。- パラメーター:
model
- 元のモデルマップ- 戻り値:
- 適格なクエリプロパティのフィルターされたマップ
- 関連事項:
isEligibleProperty
指定されたモデル要素をクエリプロパティとして公開するかどうかを決定します。デフォルトの実装では、文字列とプリミティブが適格であると見なされ、対応する要素を持つ配列とコレクション / イテラブルも考慮されます。これはサブクラスでオーバーライドできます。
- パラメーター:
key
- モデル要素のキーvalue
- モデル要素の値- 戻り値:
- 要素がクエリプロパティとして適格かどうか
isEligibleValue
指定されたモデル要素の値が公開の対象かどうかを判断します。デフォルトの実装では、プリミティブ、文字列、数値、日付、URI、URL などが
BeanUtils.isSimpleValueType(java.lang.Class<?>)
に従って適格とみなされます。これはサブクラスでオーバーライドできます。- パラメーター:
value
- モデル要素の値- 戻り値:
- 要素の値が適格かどうか
- 関連事項:
urlEncode
protected StringSE urlEncode(StringSE input, StringSE encodingScheme) throws UnsupportedEncodingExceptionSE 指定されたエンコードスキームを使用して、指定された入力文字列を URL エンコードします。デフォルトの実装では
URLEncoder.encode(input, enc)
を使用します。- パラメーター:
input
- エンコードされていない入力文字列encodingScheme
- エンコーディングスキーム- 戻り値:
- エンコードされた出力文字列
- 例外:
UnsupportedEncodingExceptionSE
- JDK URLEncoder によってスローされた場合- 関連事項:
updateTargetUrl
protected StringSE updateTargetUrl(StringSE targetUrl, MapSE<StringSE, ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) 登録されているRequestDataValueProcessor
がある場合は検索して、リダイレクトターゲット URL を更新できるようにします。- パラメーター:
targetUrl
- 指定されたリダイレクト URL- 戻り値:
- 更新された URL または渡された URL と同じ
sendRedirect
protected void sendRedirect(HttpServletRequestEE request, HttpServletResponseEE response, StringSE targetUrl, boolean http10Compatible) throws IOExceptionSE HTTP クライアントにリダイレクトを送り返します。- パラメーター:
request
- 現在の HTTP リクエスト (リクエストメソッドに反応することができます)response
- 現在の HTTP レスポンス (レスポンスヘッダーを送信するため)targetUrl
- リダイレクトするターゲット URLhttp10Compatible
- HTTP 1.0 クライアントとの互換性を維持するかどうか- 例外:
IOExceptionSE
- レスポンスメソッドによってスローされた場合
isRemoteHost
指定された targetUrl に「外部」システムのホストがあるかどうか。その場合、HttpServletResponse.encodeRedirectURL(java.lang.String)
EE は適用されません。このメソッドは、
setHosts(String[])
プロパティが構成されていて、ターゲット URL に一致しないホストがある場合にtrue
を返します。- パラメーター:
targetUrl
- ターゲットのリダイレクト URL- 戻り値:
- ターゲット URL にリモートホストがある場合は
true
、URL にホストがない場合または "host" プロパティが構成されていない場合はfalse
- 導入:
- 4.3
getHttp11StatusCode
protected HttpStatusCode getHttp11StatusCode(HttpServletRequestEE request, HttpServletResponseEE response, StringSE targetUrl) HTTP 1.1 互換リクエストに使用するステータスコードを決定します。デフォルトの実装は、設定されている場合は
statusCode
プロパティ、またはView.RESPONSE_STATUS_ATTRIBUTE
属性の値を返します。どちらも設定されていない場合、デフォルトはHttpStatus.SEE_OTHER
(303) です。- パラメーター:
request
- インスペクション依頼response
- サーブレットレスポンスtargetUrl
- ターゲット URL- 戻り値:
- レスポンスステータス