public class UIViewRoot extends UIComponentBase implements UniqueIdVendor
UIViewRoot は、UIComponent ツリーのルートを表す UIComponent です。このコンポーネントは、Ajax リクエストへのレスポンスとしてマークアップをレンダリングします。また、コンポーネントツリーのルートとしても機能し、ビューごとの PhaseListener
をハングアップする場所としても機能します。
次のライフサイクルフェーズメソッドのそれぞれについて:
RenderResponse、encodeBegin(javax.faces.context.FacesContext)
および encodeEnd(javax.faces.context.FacesContext)
経由
PhaseListener
に関して次のアクションを実行します。
状態フラグを
false
に初期化します。
getBeforePhaseListener()
が非 null
を返す場合は、リスナーを呼び出して、このフェーズに対応する正しいPhaseId
を渡します。リスナーから戻ったら、
FacesContext.getResponseComplete()
およびFacesContext.getRenderResponse()
を呼び出します。いずれかがtrue
を返す場合は、内部状態フラグをtrue
に設定します。
addPhaseListener(javax.faces.event.PhaseListener)
の呼び出しによって 1 つ以上のリスナーが追加された場合は、PhaseListener.getPhaseId()
が現在の phaseId と一致する各リスナーに対してbeforePhase
メソッドを呼び出し、前の手順と同じPhaseId
を渡します。各リスナーから戻ったら、
FacesContext.getResponseComplete()
とFacesContext.getRenderResponse()
を呼び出します。いずれかがtrue
を返す場合は、内部状態フラグをtrue
に設定します。内部状態フラグが設定されていない場合は、このフェーズの処理を実行します。
getAfterPhaseListener()
が非 null
を返す場合は、リスナーを呼び出して、このフェーズに対応する正しいPhaseId
を渡します。
addPhaseListener(javax.faces.event.PhaseListener)
の呼び出しによって 1 つ以上のリスナーが追加された場合は、PhaseListener.getPhaseId()
が現在の phaseId と一致する各リスナーに対してafterPhase
メソッドを呼び出し、前の手順と同じPhaseId
を渡します。
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | COMPONENT_FAMILY このコンポーネントの標準コンポーネントファミリ。 |
static StringSE | COMPONENT_TYPE このコンポーネントの標準コンポーネント型。 |
static StringSE | METADATA_FACET_NAME |
static StringSE | UNIQUE_ID_PREFIX createUniqueId() メソッドによって生成される識別子に使用されるプレフィックス。 |
static StringSE | VIEW_PARAMETERS_KEY ビューメタデータ BeanDescriptor の値セットのキー。その値は |
static StringSE | VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと true が返される場合、 |
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, CURRENT_COMPONENT, CURRENT_COMPOSITE_COMPONENT, FACETS_KEY, HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, VIEW_LOCATION_KEY
コンストラクターと説明 |
---|
UIViewRoot() デフォルトのプロパティ値で新しい UIViewRoot インスタンスを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | addComponentResource(FacesContext context, UIComponent componentResource) リソースインスタンスを表すと想定される引数 |
void | addComponentResource(FacesContext context, UIComponent componentResource, StringSE target) リソースインスタンスを表すと想定される引数 |
void | addPhaseListener(PhaseListener newPhaseListener) |
void | broadcastEvents(FacesContext context, PhaseId phaseId) キューに入れられたイベントをブロードキャストします。 |
StringSE | createUniqueId() コンポーネントの識別子を生成します。 |
StringSE | createUniqueId(FacesContext context, StringSE seed) コンポーネントの識別子を生成します。 |
void | encodeBegin(FacesContext context) デフォルトの UIComponentBase.encodeBegin(javax.faces.context.FacesContext) 動作をオーバーライドします。 |
void | encodeChildren(FacesContext context)
|
void | encodeEnd(FacesContext context)
|
MethodExpression | getAfterPhaseListener() このビューがレンダリングされた後に呼び出される MethodExpression を返します。 |
MethodExpression | getBeforePhaseListener() このビューがレンダリングされる前に呼び出される MethodExpression を返します。 |
ListSE<UIComponent> | getComponentResources(FacesContext context) サポートされているすべてのターゲットのすべての |
ListSE<UIComponent> | getComponentResources(FacesContext context, StringSE target) 提供された |
StringSE | getFamily() このコンポーネントが属するコンポーネントファミリの識別子を返します。 |
LocaleSE | getLocale() このビュー用に作成されているレスポンスのローカライズに使用する Locale を返します。 |
ListSE<PhaseListener> | getPhaseListeners() この |
StringSE | getRenderKitId() このビューに関連付けられている RenderKit のレンダーキット識別子を返します。 |
boolean | getRendersChildren()
|
StringSE | getViewId() このビューのビュー識別子を返します。 |
ListSE<SystemEventListener> | getViewListenersForEventClass(ClassSE<? extends SystemEvent> systemEvent) 型 |
MapSE<StringSE, ObjectSE> | getViewMap() この実装は、 |
MapSE<StringSE, ObjectSE> | getViewMap(boolean create) 「ビュースコープ」であるデータストアへのインターフェースとして機能する |
boolean | isInView()
|
void | processApplication(FacesContext context) リクエスト処理ライフサイクルのアプリケーションの呼び出しフェーズでキューに入れられたイベントをブロードキャストし、このフェーズのイベント処理によって FacesContext.renderResponse() または FacesContext.responseComplete() が呼び出された場合は、後のフェーズのイベントをすべてクリアします。 |
void | processDecodes(FacesContext context) |
void | processEvent(ComponentSystemEvent event) 引数 |
void | processRestoreState(FacesContext context, ObjectSE state) デフォルトの実装は |
void | processUpdates(FacesContext context) |
void | processValidators(FacesContext context) |
void | queueEvent(FacesEvent event) デフォルトの UIComponentBase.queueEvent(javax.faces.event.FacesEvent) 動作をオーバーライドして、後でブロードキャストするためにキューに入れられたイベントを累積します。 |
void | removeComponentResource(FacesContext context, UIComponent componentResource) このビューのリソースとして、リソースインスタンスを表すと想定されている引数 |
void | removeComponentResource(FacesContext context, UIComponent componentResource, StringSE target) このビューのリソースとして、リソースインスタンスを表すと想定されている引数 |
void | removePhaseListener(PhaseListener toRemove) 引数 toRemove がこのインスタンスの PhaseListener のリストにある場合は、削除する必要があります。 |
void | resetValues(FacesContext context, CollectionSE<StringSE> clientIds) clientIds にアクセスし、コンポーネントが |
void | restoreState(FacesContext context, ObjectSE state) state オブジェクトのエントリから状態を復元するために必要な処理を実行します。 |
void | restoreViewScopeState(FacesContext context, ObjectSE state) ViewScope 状態を復元します。 |
ObjectSE | saveState(FacesContext context) インスタンスの状態を Serializable オブジェクトとして取得します。 |
void | setAfterPhaseListener(MethodExpression newAfterPhase) UIViewRoot がライフサイクルを実行するときに、"afterPhase" イベントに対して任意のメソッドを呼び出すことを許可します。 |
void | setBeforePhaseListener(MethodExpression newBeforePhase) UIViewRoot がライフサイクルを実行するときに、"beforePhase" イベントに対して任意のメソッドを呼び出すことを許可します。 |
void | setInView(boolean isInView) アクションを実行しないようにオーバーライドされます。 |
void | setLocale(LocaleSE locale) このビューに対して作成されているレスポンスのローカライズに使用する Locale を設定します。 |
void | setRenderKitId(StringSE renderKitId) このビューに関連付けられている RenderKit のレンダーキット識別子を設定します。 |
void | setViewId(StringSE viewId) このビューのビュー識別子を設定します。 |
void | subscribeToViewEvent(ClassSE<? extends SystemEvent> systemEvent, SystemEventListener listener) 引数 |
void | unsubscribeFromViewEvent(ClassSE<? extends SystemEvent> systemEvent, SystemEventListener listener) 型 |
addClientBehavior, addFacesListener, broadcast, clearInitialState, decode, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getValueBinding, invokeOnComponent, isRendered, isTransient, markInitialState, processSaveState, removeFacesListener, restoreAttachedState, saveAttachedState, setId, setParent, setRendered, setRendererType, setTransient, setValueBinding, subscribeToEvent, unsubscribeFromEvent
encodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isVisitable, popComponentFromEL, pushComponentToEL, restoreTransientState, saveTransientState, setValueExpression, visitTree
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE VIEW_PARAMETERS_KEY
ビューメタデータ BeanDescriptor の値セットのキー。その値は List<
UIViewParameter.Reference
> です。
public static final StringSE COMPONENT_FAMILY
このコンポーネントの標準コンポーネントファミリ。
public static final StringSE VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME
このパラメーターが設定されていて、その値の文字列表現で toLowerCase().equals("true" )を呼び出すと true が返される場合、UIViewRoot
にインストールされた PhaseListener
によってスローされた例外は、ログに記録されて飲み込まれるのではなく、ExceptionHandler
のキューに入れられます。
public UIViewRoot()
デフォルトのプロパティ値で新しい UIViewRoot
インスタンスを作成します。
public boolean isInView()
UIViewRoot
は常にビュー内にあるように定義されているため、スーパークラスメソッドをオーバーライドして常に true
を返します。
UIComponent
の isInView
true
、それ以外の場合は false
。public void setInView(boolean isInView)
アクションを実行しないようにオーバーライドされます。
UIComponent
の setInView
isInView
- 値を無視します。public StringSE getFamily()
UIComponent
このコンポーネントが属するコンポーネントファミリの識別子を返します。この識別子は、rendererType
プロパティの値と組み合わせて、このコンポーネントインスタンスに適切な Renderer
を選択するために使用できます。このメソッドは null
を返すべきではないことに注意してください
UIComponent
の getFamily
UIComponent.getFamily()
public StringSE getRenderKitId()
このビューに関連付けられている RenderKit
のレンダーキット識別子を返します。ViewHandler.createView(javax.faces.context.FacesContext, java.lang.String)
のように明示的に設定されていない限り、戻り値は null.
になります。
null
。public void setRenderKitId(StringSE renderKitId)
このビューに関連付けられている RenderKit
のレンダーキット識別子を設定します。このメソッドは、リクエスト処理ライフサイクルの「リクエスト値の適用」フェーズの終了(つまり、イベントがブロードキャストされているとき)から「レスポンスのレンダリング」フェーズの開始までの任意の時点で呼び出すことができます。
public StringSE getViewId()
このビューのビュー識別子を返します。
public void setViewId(StringSE viewId)
このビューのビュー識別子を設定します。
viewId
- 新しいビュー識別子 public MethodExpression getBeforePhaseListener()
このビューがレンダリングされる前に呼び出される MethodExpression
を返します。
MethodExpression
。public void setBeforePhaseListener(MethodExpression newBeforePhase)
UIViewRoot がライフサイクルを実行するときに、"beforePhase" イベントに対して任意のメソッドを呼び出すことができます。このメソッドは、PhaseId.RESTORE_VIEW
を除くすべてのフェーズで呼び出されます。実際の PhaseListener
とは異なり、このアプローチでは、特定のフェーズに対してのみ PhaseEvent
を受信することはできません。
メソッドは、PhaseListener.beforePhase(javax.faces.event.PhaseEvent)
の署名に準拠している必要があります。
newBeforePhase
- このビューがレンダリングされる前に呼び出される MethodExpression
。public MethodExpression getAfterPhaseListener()
このビューがレンダリングされた後に呼び出される MethodExpression
を返します。
MethodExpression
。public void setAfterPhaseListener(MethodExpression newAfterPhase)
UIViewRoot がライフサイクルを実行するときに、"afterPhase" イベントに対して任意のメソッドを呼び出すことができます。このメソッドは、PhaseId.RESTORE_VIEW
を含むすべてのフェーズに対して呼び出されます。実際の PhaseListener
とは異なり、このアプローチでは、特定のフェーズに対してのみ PhaseEvent
を受信することはできません。
メソッドは、PhaseListener.afterPhase(javax.faces.event.PhaseEvent)
の署名に準拠している必要があります。
newAfterPhase
- このビューがレンダリングされた後に呼び出される MethodExpression
。public void removePhaseListener(PhaseListener toRemove)
引数 toRemove
がこのインスタンスの PhaseListener
のリストにある場合は、削除する必要があります。
toRemove
- 削除する PhaseListener
。public void addPhaseListener(PhaseListener newPhaseListener)
引数 newPhaseListener
をこの UIViewRoot
の PhaseListener
のリストに追加します。
newPhaseListener
- 追加する PhaseListener
public ListSE<PhaseListener> getPhaseListeners()
この UIViewRoot
インスタンスにアタッチされている PhaseListener
インスタンスの変更不可能なリストを返します。
public void addComponentResource(FacesContext context, UIComponent componentResource)
このビューのリソースとして、リソースインスタンスを表すと想定される引数 component
を追加します。リソースインスタンスは、標準 HTML RenderKit に従って、リソース Renderer
によってレンダリングされます。デフォルトの実装では、addComponentResource(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.String)
を呼び出す必要があります。
context
- 現在のリクエストの FacesContext
componentResource
- Resource
インスタンスを表す UIComponent
public void addComponentResource(FacesContext context, UIComponent componentResource, StringSE target)
このビューのリソースとして、リソースインスタンスを表すと想定される引数 component
を追加します。リソースインスタンスは、標準 HTML RenderKit に従って、リソース Renderer
によってレンダリングされます。
component
は、次のアルゴリズムを使用して追加する必要があります。
target
引数が null
の場合、component
で target
属性を探します。target
属性がない場合は、target
をデフォルト値 head
に設定します。
getComponentResources(javax.faces.context.FacesContext, java.lang.String)
を呼び出して、指定されたターゲットの子リストを取得します。
componentResource
のコンポーネント ID が、すでに追加されているリソースの ID と一致する場合は、古いリソースを削除します。
component
リソースをリストに追加します。
リソース Renderer
は、次のことを確認する必要があります。
ResourceHandler.isResourceRendered(FacesContext, String, String)
が true
を返す場合はレンダリングしないでください。ResourceHandler.markResourceRendered(FacesContext, String, String)
を呼び出します。context
- 現在のリクエストの FacesContext
componentResource
- Resource
インスタンスを表す UIComponent
target
- UIComponent
が追加されるファセットの名前 public ListSE<UIComponent> getComponentResources(FacesContext context, StringSE target)
提供された target
アグリメントの UIComponent
の変更不可能な List
を返します。List
の各 component
は、リソースインスタンスを表すと見なされます。
デフォルトの実装では、次と同等のアルゴリズムを使用する必要があります。
target
を引数として使用して getFacet()
を呼び出すことにより、component
のファセットを見つけます。context.getApplication().createComponent().
を呼び出してファセットを作成します。このメソッドの引数は、UIPanel
を継承し、encodeAll()
メソッドをオーバーライドしてアクションを実行しないコンポーネントを参照する必要があります。これは、コンポーネントリソースが誤ってレンダリングされるのを防ぐために必要です。id
を、リテラル文字列 "javax_faces_location_
" (引用符なし)を target
引数の値の前に付加して作成された文字列に設定します。target
をキーとして使用して、ファセット Map
にファセットを追加します context
- Faces コンテキスト。target
- コンポーネントが返されるファセットの名前。target
という名前のファセットの UIComponent
子の List
。ファセットの子が見つからない場合は、Collections.emptyList()
を返します。NullPointerExceptionSE
- target
または context
が null
の場合 public ListSE<UIComponent> getComponentResources(FacesContext context)
サポートされているすべてのターゲットのすべての UIComponent
リソースの変更不可能な順序付き List
を返します。List
の各 component
は、リソースインスタンスを表すと見なされます。順序は、リソースがコンポーネントツリーに表示されるのと同じです。
context
- Faces コンテキスト。UIComponent
リソースの List
。リソースが見つからない場合は、空の List
を返します。NullPointerExceptionSE
- context
が null
の場合。public void removeComponentResource(FacesContext context, UIComponent componentResource)
このビューのリソースとして、リソースインスタンスを表すと想定されている引数 component
を削除します。
context
- 現在のリクエストの FacesContext
componentResource
- Resource
インスタンスを表す UIComponent
public void removeComponentResource(FacesContext context, UIComponent componentResource, StringSE target)
このビューのリソースとして、リソースインスタンスを表すと想定される引数 component
を削除します。リソースインスタンスは、標準 HTML RenderKit に従って、リソース Renderer
によってレンダリングされます。
component
は、次のアルゴリズムを使用して削除する必要があります。
target
引数が null
の場合、component
で target
属性を探します。target
属性がない場合は、target
をデフォルト値 head
に設定します。getComponentResources(javax.faces.context.FacesContext, java.lang.String)
を呼び出して、指定されたターゲットの子リストを取得します。component
リソースを削除します。context
- 現在のリクエストの FacesContext
componentResource
- Resource
インスタンスを表す UIComponent
target
- UIComponent
が追加されるファセットの名前 public void queueEvent(FacesEvent event)
デフォルトの UIComponentBase.queueEvent(javax.faces.event.FacesEvent)
動作をオーバーライドして、後でブロードキャストするためにキューに入れられたイベントを累積します。
UIComponentBase
の queueEvent
event
- キューに入れられる FacesEvent
IllegalStateExceptionSE
- このコンポーネントが UIViewRoot
の子孫でない場合 NullPointerExceptionSE
- event
が null
の場合 public void broadcastEvents(FacesContext context, PhaseId phaseId)
キューに入れられたイベントをブロードキャストします。PhaseId.ANY_PHASE
のキューに入れられた最初のブロードキャストイベント。次に、現在のフェーズでキューに入れられたイベントをブロードキャストします。どちらの場合も、例外の場合でも、イベントがブロードキャストされる前に UIComponent.pushComponentToEL(javax.faces.context.FacesContext, javax.faces.component.UIComponent)
を呼び出す必要があり、ブロードキャストから戻った後に UIComponent.popComponentFromEL(javax.faces.context.FacesContext)
を呼び出す必要があります。
context
- 現在のリクエストの FacesContext
phaseId
- 現在のフェーズの PhaseId
public void processRestoreState(FacesContext context, ObjectSE state)
デフォルトの実装は try
ブロック内から UIComponentBase.processRestoreState(javax.faces.context.FacesContext, java.lang.Object)
を呼び出す必要があります。try
ブロックには、FacesEvent
がイベントキューに残らないようにする finally
ブロックが必要です。
UIComponentBase
の processRestoreState
context
- この requets の FacesContext
state
- StateManager
から取得した不透明状態オブジェクト public void processEvent(ComponentSystemEvent event) throws AbortProcessingException
引数 event
が PostRestoreStateEvent
のインスタンスであり、PartialViewContext.isPartialRequest()
が true
を返す場合、すべてのコンポーネントリソースをループし、それぞれに対して ResourceHandler.markResourceRendered(FacesContext, String, String)
を呼び出します。最後に、スーパーに委譲します。
ComponentSystemEventListener
の processEvent
UIComponent
の processEvent
event
- 処理中の ComponentSystemEvent
インスタンス。AbortProcessingException
- このリクエストでライフサイクル処理を停止するかどうか。public void processDecodes(FacesContext context)
次の場合は、PhaseId.APPLY_REQUEST_VALUES
で PartialViewContext.processPartial(javax.faces.event.PhaseId)
を呼び出して、部分処理を実行します。
PartialViewContext.isPartialRequest()
は true
を返しますが、ビュー内のすべてのコンポーネントを処理するリクエストはありません。( PartialViewContext.isExecuteAll()
は false
を返します)UIComponentBase.processDecodes(javax.faces.context.FacesContext)
を呼び出して完全な処理を実行します。PartialViewContext.isPartialRequest()
は true
を返し、ビュー内のすべてのコンポーネントを処理するようにリクエストされています ( PartialViewContext.isExecuteAll()
は true
を返します)PartialViewContext.isPartialRequest()
は false
を返します デフォルトの UIComponentBase.processDecodes(javax.faces.context.FacesContext)
動作をオーバーライドして、デフォルトの処理または部分的な処理が完了した後にキューに入れられたイベントをブロードキャストし、このフェーズのイベント処理によって FacesContext.renderResponse()
または FacesContext.responseComplete()
が呼び出された場合は、後のフェーズのイベントをクリアします。
UIComponentBase
の processDecodes
context
- FacesContext
(処理中のリクエスト)NullPointerExceptionSE
- context
が null
の場合 public void resetValues(FacesContext context, CollectionSE<StringSE> clientIds)
clientIds にアクセスし、コンポーネントが EditableValueHolder
のインスタンスである場合は、その EditableValueHolder.resetValue()
メソッドを呼び出します。アクセスには UIComponent.visitTree(javax.faces.component.visit.VisitContext, javax.faces.component.visit.VisitCallback)
を使用します。
context
- 処理中のリクエストの FacesContext
。clientIds
- 説明されているアクションが実行される、訪問されるクライアント ID。public void encodeBegin(FacesContext context) throws IOExceptionSE
デフォルトの UIComponentBase.encodeBegin(javax.faces.context.FacesContext)
の動作をオーバーライドします。getBeforePhaseListener()
が null
以外を返す場合は、それを呼び出して、PhaseId.RENDER_RESPONSE
フェーズの PhaseEvent
を渡します。addPhaseListener(javax.faces.event.PhaseListener)
の呼び出しによって生成された内部リストが空でない場合は、そのリスト内のすべてのリスナーの PhaseListener.beforePhase(javax.faces.event.PhaseEvent)
メソッドを呼び出して、PhaseEvent
を渡す必要があります。beforePhase リスナーの呼び出し中に発生した Exception
はすべて、VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME
パラメーターが設定されていない限り、ログに記録して取り込む必要があります。その場合は、Exception
も ExceptionHandler
に渡す必要があります。
UIComponentBase
の encodeBegin
context
- FacesContext
は作成中のレスポンス IOExceptionSE
- レンダリング中に入出力エラーが発生した場合 public void encodeChildren(FacesContext context) throws IOExceptionSE
PartialViewContext.isAjaxRequest()
が true
を返す場合は、PhaseId.RENDER_RESPONSE
を指定して PartialViewContext.processPartial(javax.faces.event.PhaseId)
を呼び出して部分レンダリングを実行します。PartialViewContext.isAjaxRequest()
が false
を返す場合は、親 UIComponentBase.encodeChildren(javax.faces.context.FacesContext)
メソッドに委譲します。
この UIViewRoot
が NamingContainer
のインスタンスである場合、Jakarta Server Faces 実装は、UIComponent.getClientId(FacesContext)
の規則に従って、エンコードされたすべての POST リクエストパラメーター名の前に UIComponent.getContainerClientId(FacesContext)
が付いていることを確認する必要があります。これには、以下にリストされているすべての事前定義された POST リクエストパラメーターも含まれます。
ResponseStateManager.VIEW_STATE_PARAM
ResponseStateManager.CLIENT_WINDOW_PARAM
ResponseStateManager.RENDER_KIT_ID_PARAM
ClientBehaviorContext.BEHAVIOR_SOURCE_PARAM_NAME
ClientBehaviorContext.BEHAVIOR_EVENT_PARAM_NAME
PartialViewContext.PARTIAL_EVENT_PARAM_NAME
PartialViewContext.PARTIAL_EXECUTE_PARAM_NAME
PartialViewContext.PARTIAL_RENDER_PARAM_NAME
PartialViewContext.RESET_VALUES_PARAM_NAME
UIComponentBase
の encodeChildren
context
- FacesContext
は作成中のレスポンス IOExceptionSE
- レンダリング中に入出力エラーが発生した場合 public void encodeEnd(FacesContext context) throws IOExceptionSE
getAfterPhaseListener()
が非 null
を返す場合は、それを呼び出し、PhaseId.RENDER_RESPONSE
フェーズの PhaseEvent
を渡します。afterPhase リスナーの呼び出し中に発生するすべての Exception
は、VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS_PARAM_NAME
パラメーターが設定されていない限り、ログに記録して取り込む必要があります。その場合、Exception
も ExceptionHandler
に渡す必要があります。現在のビューにビューパラメーターがある場合 (空でなく、UnsupportedOperationException
をスローする非 ViewDeclarationLanguage.getViewMetadata(javax.faces.context.FacesContext, String)
の戻り値によって示される)、各パラメーターで UIViewParameter.encodeAll(javax.faces.context.FacesContext)
を呼び出します。getViewParameters()
の呼び出しによって UnsupportedOperationException
がスローされる場合は、例外を暗黙的に取り込む必要があります。
UIComponentBase
の encodeEnd
context
- FacesContext
は作成中のレスポンス IOExceptionSE
- レンダリング中に入出力エラーが発生した場合 public boolean getRendersChildren()
UIComponentBase.getRendersChildren()
を呼び出す PartialViewContext.isAjaxRequest()
が true
を返す場合、このメソッドは true
を返す必要があります。
UIComponentBase
の getRendersChildren
true
、それ以外の場合は false
。public void processValidators(FacesContext context)
次の場合は、PhaseId.PROCESS_VALIDATIONS
で PartialViewContext.processPartial(javax.faces.event.PhaseId)
を呼び出して、部分処理を実行します。
PartialViewContext.isPartialRequest()
は true
を返しますが、ビュー内のすべてのコンポーネントを処理するリクエストはありません。( PartialViewContext.isExecuteAll()
は false
を返します)UIComponentBase.processValidators(javax.faces.context.FacesContext)
を呼び出して完全な処理を実行します。PartialViewContext.isPartialRequest()
は true
を返し、ビュー内のすべてのコンポーネントを処理するようにリクエストされています ( PartialViewContext.isExecuteAll()
は true
を返します)PartialViewContext.isPartialRequest()
は false
を返します デフォルトの UIComponentBase.processValidators(javax.faces.context.FacesContext)
動作をオーバーライドして、デフォルトの処理または部分的な処理が完了した後にキューに入れられたイベントをブロードキャストし、このフェーズのイベント処理によって FacesContext.renderResponse()
または FacesContext.responseComplete()
が呼び出された場合は、後のフェーズのイベントをクリアします。
UIComponentBase
の processValidators
context
- FacesContext
(処理中のリクエスト)NullPointerExceptionSE
- context
が null
の場合 PreValidateEvent
, PostValidateEvent
public void processUpdates(FacesContext context)
次の場合は、PhaseId.UPDATE_MODEL_VALUES
で PartialViewContext.processPartial(javax.faces.event.PhaseId)
を呼び出して、部分処理を実行します。
PartialViewContext.isPartialRequest()
は true
を返しますが、ビュー内のすべてのコンポーネントを処理するリクエストはありません。( PartialViewContext.isExecuteAll()
は false
を返します)UIComponentBase.processUpdates(javax.faces.context.FacesContext)
を呼び出して完全な処理を実行します。PartialViewContext.isPartialRequest()
は true
を返し、ビュー内のすべてのコンポーネントを処理するようにリクエストされています ( PartialViewContext.isExecuteAll()
は true
を返します)PartialViewContext.isPartialRequest()
は false
を返します デフォルトの UIComponentBase
動作をオーバーライドして、デフォルトの処理または部分的な処理が完了した後にキューに入れられたイベントをブロードキャストし、このフェーズのイベント処理によって FacesContext.renderResponse()
または FacesContext.responseComplete()
が呼び出された場合は、後のフェーズのイベントをクリアします。
UIComponentBase
の processUpdates
context
- FacesContext
(処理中のリクエスト)NullPointerExceptionSE
- context
が null
の場合 public void processApplication(FacesContext context)
リクエスト処理ライフサイクルのアプリケーションの呼び出しフェーズでキューに入れられたイベントをブロードキャストし、このフェーズのイベント処理によって FacesContext.renderResponse()
または FacesContext.responseComplete()
が呼び出された場合は、後のフェーズのイベントをすべてクリアします。
context
- FacesContext
(処理中のリクエスト)NullPointerExceptionSE
- context
が null
の場合 public StringSE createUniqueId()
コンポーネントの識別子を生成します。識別子には接頭辞 UNIQUE_ID_PREFIX が付けられ、 この UIViewRoot の非 NamingContainer
子サブツリー内で一意になります。
public StringSE createUniqueId(FacesContext context, StringSE seed)
コンポーネントの識別子を生成します。識別子には接頭辞 UNIQUE_ID_PREFIX が付けられ、この UIViewRoot 内で一意になります。オプションで、一意のシード値をコンポーネント作成者が提供できます。これは、生成された一意の ID に含める必要があります。
UniqueIdVendor
の createUniqueId
context
- FacesContextseed
- オプションのシード値 - 例 VDL テンプレート内のコンポーネントの位置に基づく public LocaleSE getLocale()
このビュー用に作成されているレスポンスのローカライズに使用する Locale
を返します。
アルゴリズム:
locale
ivar がある場合は、それを返します。「ロケール」の値式がある場合は、その値を取得します。値が null
の場合、ViewHandler.calculateLocale(javax.faces.context.FacesContext)
を呼び出した結果を返します。値が java.util.Locale
のインスタンスである場合は、それを返します。値が文字列の場合は、java.util.Locale
に変換して返します。"locale" の値式がない場合は、ViewHandler.calculateLocale(javax.faces.context.FacesContext)
を呼び出した結果を返します。
Locale
。public void setLocale(LocaleSE locale)
このビューに対して作成されているレスポンスのローカライズに使用する Locale
を設定します。
locale
- 新しいローカライゼーションロケール public MapSE<StringSE,ObjectSE> getViewMap()
この実装は、true
を引数として渡して getViewMap(boolean)
を呼び出すだけで、結果を返します。
null
。public MapSE<StringSE,ObjectSE> getViewMap(boolean create)
「ビュースコープ」であるデータストアへのインターフェースとして機能する Map
を返します。または、このインスタンスにそのような Map
がなく、create
引数が true
の場合は、Map
を作成して返します。このマップは、遅延してインスタンス化され、この UIViewRoot
インスタンスでこのメソッドへの後続の呼び出しから返されるようにキャッシュされる必要があります。Application.publishEvent(javax.faces.context.FacesContext, java.lang.Class<? extends javax.faces.event.SystemEvent>, java.lang.Object)
を呼び出す必要があり、現在の FacesContext
を最初の引数として、PostConstructViewMapEvent
.class
を 2 番目の引数として、UIViewRoot.class
を 3 番目の引数として、この UIViewRoot
インスタンスを 4 番目の引数として渡します。UIViewRoot
がカスタムクラスで拡張された場合を考慮して、UIViewRoot.class
引数を渡す必要があります。
返された Map
は、Map
で clear()
を呼び出すと、Application.publishEvent(javax.faces.context.FacesContext, java.lang.Class<? extends javax.faces.event.SystemEvent>, java.lang.Object)
が呼び出され、PreDestroyViewMapEvent
.class
が最初の引数として渡され、この UIViewRoot
インスタンスが 2 番目の引数として渡されるように実装する必要があります。
アプリケーションの構成によっては、ビューマップに保存されるオブジェクトは Serializable
である必要がある場合があります。一般に、ビューマップに格納されているオブジェクトが Serializable
であることを確認することをお勧めします。
ViewScoped
で明らかにされた理由により、このマップは最終的にセッションに保存する必要があります。このため、create
引数の true
値は、ExternalContext.getSession(boolean)
の呼び出しでセッションを強制的に作成します。
clear()
メソッドを呼び出す必要がある場合の仕様については、FacesContext.setViewRoot(javax.faces.component.UIViewRoot)
を参照してください。
create
- 必要に応じて、このインスタンスの新しい Map
を作成する true
。現在の Map
がない場合に null
を返す false
。null
。public void subscribeToViewEvent(ClassSE<? extends SystemEvent> systemEvent, SystemEventListener listener)
引数 listener
によって参照されるリスナーインスタンスを、型 systemEventClass
のイベントのリスナーとして UIViewRoot
にインストールします。
インストールされたリスナーは、UIViewRoot
の状態の一部として維持されないことに注意してください。
systemEvent
- listener
を発生させる必要があるイベントの Class
listener
- 型 systemEventClass
のイベントが発生したときに SystemEventListener.processEvent(javax.faces.event.SystemEvent)
メソッドを呼び出す必要がある SystemEventListener
の実装。NullPointerExceptionSE
- systemEventClass
または listener
が null
の場合。public void unsubscribeFromViewEvent(ClassSE<? extends SystemEvent> systemEvent, SystemEventListener listener)
型 systemEventClass
のイベントのリスナーとして、引数 listener
によって参照されるリスナーインスタンスを UIViewRoot
から削除します。
systemEvent
- listener
を発生させる必要があるイベントの Class
listener
- 型 systemEventClass
のイベントが発生したときに SystemEventListener.processEvent(javax.faces.event.SystemEvent)
メソッドを呼び出す必要がある SystemEventListener
の実装。NullPointerExceptionSE
- systemEventClass
または listener
が null
の場合。public ListSE<SystemEventListener> getViewListenersForEventClass(ClassSE<? extends SystemEvent> systemEvent)
型 eventClass
のイベントに関心のある、この UIComponent
インスタンスに登録されている SystemEventListener
インスタンスを返します。
systemEvent
- リスナーを返す必要があるイベントの Class
NullPointerExceptionSE
- 引数 systemEvent
が null
の場合。public void restoreViewScopeState(FacesContext context, ObjectSE state)
ViewScope 状態を復元します。これは、コンポーネントツリーの構築元のテンプレートで EL 式にビュースコープの Bean を使用できるようにするために必要です。例: <ui:include src="#{viewScopedBean.includeFileName}"/>
。
context
- 現在の FacesContext。state
- 状態オブジェクト。public ObjectSE saveState(FacesContext context)
StateHolder
インスタンスの状態を Serializable
オブジェクトとして取得します。
このインターフェースを実装するクラスが、StateHolder を実装するインスタンス(イベントハンドラー、バリデーターなどを含む UIComponent
など)への参照を持っている場合、このメソッドはそれらすべてのインスタンスで StateHolder.saveState(javax.faces.context.FacesContext)
メソッドも呼び出す必要があります。このメソッドは、子とファセットの状態を保存してはなりませんそれは StateManager
を介して行われます
このメソッドは、実装オブジェクトの状態を変更してはなりません。つまり、このコードを実行した後:
Object state = component.saveState(facesContext);
component
は、実行前と同じでなければなりません。
このメソッドからの戻り値は Serializable
でなければなりません
StateHolder
の saveState
UIComponentBase
の saveState
context
- Faces コンテキスト。public void restoreState(FacesContext context, ObjectSE state)
StateHolder
state オブジェクトのエントリから状態を復元するために必要な処理を実行します。
このインターフェースを実装するクラスが、StateHolder も実装するインスタンスへの参照を持っている場合(イベントハンドラー、バリデーターなどを備えた UIComponent
など)、このメソッドはそれらすべてのインスタンスで StateHolder.restoreState(javax.faces.context.FacesContext, java.lang.Object)
メソッドも呼び出す必要があります。
state
引数が null
の場合、アクションを実行せずに戻ります。
StateHolder
の restoreState
UIComponentBase
の restoreState
context
- Faces コンテキスト。state
- 状態。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.