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_PREFIXcreateUniqueId() メソッドによって生成される識別子に使用されるプレフィックス。 |
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, unsubscribeFromEventencodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isVisitable, popComponentFromEL, pushComponentToEL, restoreTransientState, saveTransientState, setValueExpression, visitTreecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic 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 - 追加する PhaseListenerpublic 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 - 現在のリクエストの FacesContextcomponentResource - Resource インスタンスを表す UIComponentpublic 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 - 現在のリクエストの FacesContextcomponentResource - Resource インスタンスを表す UIComponenttarget - 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 - 現在のリクエストの FacesContextcomponentResource - Resource インスタンスを表す UIComponentpublic 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 - 現在のリクエストの FacesContextcomponentResource - Resource インスタンスを表す UIComponenttarget - UIComponent が追加されるファセットの名前 public void queueEvent(FacesEvent event)
デフォルトの UIComponentBase.queueEvent(javax.faces.event.FacesEvent) 動作をオーバーライドして、後でブロードキャストするためにキューに入れられたイベントを累積します。
UIComponentBase の queueEvent event - キューに入れられる FacesEventIllegalStateExceptionSE - このコンポーネントが 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 - 現在のリクエストの FacesContextphaseId - 現在のフェーズの PhaseIdpublic 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_PARAMResponseStateManager.CLIENT_WINDOW_PARAMResponseStateManager.RENDER_KIT_ID_PARAMClientBehaviorContext.BEHAVIOR_SOURCE_PARAM_NAMEClientBehaviorContext.BEHAVIOR_EVENT_PARAM_NAMEPartialViewContext.PARTIAL_EVENT_PARAM_NAMEPartialViewContext.PARTIAL_EXECUTE_PARAM_NAMEPartialViewContext.PARTIAL_RENDER_PARAM_NAMEPartialViewContext.RESET_VALUES_PARAM_NAMEUIComponentBase の 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, PostValidateEventpublic 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)
StateHolderstate オブジェクトのエントリから状態を復元するために必要な処理を実行します。
このインターフェースを実装するクラスが、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.