クラス UIViewAction
- java.lang.ObjectSE
-
- jakarta.faces.component.UIComponent
-
- jakarta.faces.component.UIComponentBase
-
- jakarta.faces.component.UIViewAction
- 実装されたすべてのインターフェース:
ActionSource
、ActionSource2
、PartialStateHolder
、StateHolder
、TransientStateHolder
、ComponentSystemEventListener
、FacesListener
、SystemEventListenerHolder
、EventListenerSE
public class UIViewAction extends UIComponentBase implements ActionSource2
UIViewAction は、ポストバックではなく、通常は最初のリクエストにレスポンスして、リクエスト処理ライフサイクル中に発生するメソッド呼び出しを表します。
ViewDeclarationLanguage
実装では、<f:metadata />
要素内に配置された<f:viewAction />
要素が出現するたびに、このコンポーネントのインスタンスをビューに配置する必要があります。ユーザーは<f:metadata />
をUIViewRoot
の直接の子として配置する必要があります。このクラスは
ActionSource2
を実装するため、UICommand
などのActionSource2
を実装するコンポーネントに対して通常実行されるアクションは、このクラスのインスタンスに対して有効です。このクラスのインスタンスは、Ajax リクエストを含む通常の Jakarta Faces ライフサイクルに参加します。このコンポーネントの目的は、Jakarta Faces ビューのロード時にコードを実行して、システムサービス、コンテンツの取得、ビューの管理、ナビゲーションの統合をサポートする軽量のフロントコントローラーソリューションを提供することです。この機能は、非顔(初期)リクエストに特に役立ちます。
このコンポーネントの最も一般的な使用例は、多くの場合 1 つ以上の
UIViewParameter
を使用して、特定のビューに必要なアクションを実行することです。アクションが呼び出された後、アクションシグネチャーと結果に一致するナビゲーションケースを実行するために
NavigationHandler
が参照されます。ナビゲーションケースが一致して新しい viewId が現在の viewId と異なる場合、異なる viewId を持つ一致したナビゲーションケースがリダイレクトを呼び出しているかどうかに関係なく、ランタイムは異なる viewId を持つ一致したナビゲーションケースへのリダイレクトを強制する必要があります。ナビゲーションによってフロー遷移が発生する場合は、リダイレクトのクエリ文字列に適切なメタデータを含める必要があります。<redirect />
ケースの処理方法の仕様については、Jakarta Faces Specification Document のセクション 7.4.2「デフォルトの NavigationHandler アルゴリズム」を参照してください。UIViewAction コンポーネントが非面(初期)リクエストで処理される前に、完全なコンポーネントツリーが構築されないことに注意することが重要です。むしろ、コンポーネントツリーには
ViewMetadata
のみが含まれています。これは、このコンポーネントの最適化の重要な部分であり、PreRenderViewEvent
リスナーと区別されるものです。- 導入:
- 2.2
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 static StringSE
COMPONENT_FAMILY
このコンポーネントの標準コンポーネントファミリ。static StringSE
COMPONENT_TYPE
このコンポーネントの標準コンポーネント型。クラス jakarta.faces.component.UIComponent から継承されたフィールド
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, FACETS_KEY, VIEW_LOCATION_KEY
コンストラクターのサマリー
コンストラクター コンストラクター 説明 UIViewAction()
デフォルトのプロパティ値で新しいUIViewAction
インスタンスを作成します。
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
addActionListener(ActionListener listener)
新しいActionListener
を、ActionEvent
の発生時に通知を受けることに関心のあるリスナーのセットに追加します。void
broadcast(FacesEvent event)
このコンポーネントインスタンスによって指定されたメソッド呼び出しを有効にして、UICommand.broadcast(jakarta.faces.event.FacesEvent)
と同様に、ナビゲーションを実行する値を返します。void
decode(FacesContext context)
スーパークラスからの動作をオーバーライドしてActionEvent
をキューに入れると、このインスタンスに関連付けられているaction
またはactionListener
が呼び出される可能性があります。MethodExpression
getActionExpression()
immediate
プロパティの値に応じて、リクエスト処理ライフサイクルのリクエスト値の適用フェーズまたはアプリケーションの呼び出しフェーズ中に、ユーザーがこのUIComponent
をアクティブ化した場合、呼び出されるアプリケーションアクションを指すMethodExpression
を返します。ActionListener[]
getActionListeners()
このActionSource
インスタンスに登録されているActionListener
のセットを返します。StringSE
getFamily()
このコンポーネントが属するコンポーネントファミリの識別子を返します。StringSE
getPhase()
アクションがキューに入れられるライフサイクルフェーズの名前を返します。boolean
isImmediate()
コンポーネントのimmediate
属性の値がtrue
の場合、アクションはリクエスト値の適用 Jakarta Faces ライフサイクルフェーズ中に呼び出されます。boolean
isOnPostback()
true
の場合、このコンポーネントはポストバックで動作します。static boolean
isProcessingBroadcast(FacesContext context)
現在のリクエスト処理ライフサイクルがdecode(jakarta.faces.context.FacesContext)
の呼び出し中にキューに入れられたイベントのブロードキャストを処理している最中にある場合、true
を返します。boolean
isRendered()
このコンポーネントがdecode(jakarta.faces.context.FacesContext)
メソッドで指定されたアクションを実行する必要がある場合は、true
を返します。void
removeActionListener(ActionListener listener)
ActionEvent
の発生時に通知を受けることに関心のあるリスナーのセットから既存のActionListener
(存在する場合)を削除します。void
setActionExpression(MethodExpression actionExpression)
immediate
プロパティの値に応じて、リクエスト処理ライフサイクルのリクエスト値の適用フェーズまたはアプリケーションの呼び出しフェーズ中に、このUIComponent
がユーザーによってアクティブ化された場合に呼び出されるアプリケーションアクションを指すMethodExpression
を設定します。void
setImmediate(boolean immediate)
このUIComponent
の「即時実行」フラグを設定します。void
setOnPostback(boolean onPostback)
このコンポーネントがポストバックで動作するかどうかを制御します。void
setPhase(StringSE phase)
このインスタンスがActionEvent
をキューに入れるライフサイクルフェーズを設定しようとします。void
setRendered(boolean condition)
このコンポーネントのif
プロパティを設定します。クラス jakarta.faces.component.UIComponentBase から継承されたメソッド
addClientBehavior, addFacesListener, clearInitialState, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getRendersChildren, invokeOnComponent, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendererType, setTransient, subscribeToEvent, unsubscribeFromEvent
クラス jakarta.faces.component.UIComponent から継承されたメソッド
encodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, visitTree
コンストラクターの詳細
UIViewAction
public UIViewAction()
デフォルトのプロパティ値で新しい
UIViewAction
インスタンスを作成します。
メソッドの詳細
getFamily
public StringSE getFamily()
クラスからコピーされた説明:UIComponent
このコンポーネントが属するコンポーネントファミリの識別子を返します。この識別子は、
rendererType
プロパティの値と組み合わせて、このコンポーネントインスタンスに適切なRenderer
を選択するために使用できます。このメソッドはnull
を返すべきではないことに注意してください- 次で指定:
- クラス
UIComponent
のgetFamily
- 戻り値:
- コンポーネントファミリ(null 以外)。
isImmediate
public boolean isImmediate()
コンポーネントの
immediate
属性の値がtrue
の場合、アクションはリクエスト値の適用 Jakarta Faces ライフサイクルフェーズ中に呼び出されます。それ以外の場合は、デフォルトの動作であるアプリケーションの起動フェーズでアクションが呼び出されます。フェーズは、immediate
属性よりも優先されるphase
属性で明示的に設定できます。- 次で指定:
- インターフェース
ActionSource
のisImmediate
- 戻り値:
- 即時の場合は
true
、それ以外の場合はfalse
。 - 導入:
- 2.2
setImmediate
public void setImmediate(boolean immediate)
この
UIComponent
の「即時実行」フラグを設定します。- 次で指定:
- インターフェース
ActionSource
のsetImmediate
- パラメーター:
immediate
- 新しい即時実行フラグ- 導入:
- 2.2
getPhase
public StringSE getPhase()
アクションがキューに入れられるライフサイクルフェーズの名前を返します。
- 戻り値:
- フェーズ(文字列として)。
- 導入:
- 2.2
setPhase
public void setPhase(StringSE phase)
このインスタンスが
ActionEvent
をキューに入れるライフサイクルフェーズを設定しようとします。引数phase
をPhaseId.phaseIdValueOf(java.lang.String)
に渡します。結果が次のいずれの値でもない場合は、FacesException
をスローする必要があります。設定されている場合、この値は即時フラグよりも優先されます。
- パラメーター:
phase
- フェーズ ID(文字列値として)。- 導入:
- 2.2
isProcessingBroadcast
public static boolean isProcessingBroadcast(FacesContext context)
現在のリクエスト処理ライフサイクルが
decode(jakarta.faces.context.FacesContext)
の呼び出し中にキューに入れられたイベントのブロードキャストを処理している最中にある場合は、true
を返します。broadcast(jakarta.faces.event.FacesEvent)
の実装は、このメソッドの呼び出しがこの事実を正確に反映することを保証する責任があります。- パラメーター:
context
- 現在のリクエストのFacesContext
- 戻り値:
true
は現在ブロードキャストを処理しています。false
はそれ以外の場合です。- 導入:
- 2.2
addActionListener
public void addActionListener(ActionListener listener)
新しい
ActionListener
を、ActionEvent
の発生時に通知を受けることに関心のあるリスナーのセットに追加します。- 次で指定:
- インターフェース
ActionSource
のaddActionListener
- パラメーター:
listener
- 追加するActionListener
- 導入:
- 2.2
getActionListeners
public ActionListener[] getActionListeners()
この
ActionSource
インスタンスに登録されているActionListener
のセットを返します。登録済みのリスナーがない場合は、長さ 0 の配列が返されます。- 次で指定:
- インターフェース
ActionSource
のgetActionListeners
- 戻り値:
- アクションリスナー、または長さゼロの配列。
- 導入:
- 2.2
removeActionListener
public void removeActionListener(ActionListener listener)
ActionEvent
の発生時に通知を受けることに関心のあるリスナーのセットから既存のActionListener
(存在する場合)を削除します。- 次で指定:
- インターフェース
ActionSource
のremoveActionListener
- パラメーター:
listener
- 削除するActionListener
- 導入:
- 2.2
getActionExpression
public MethodExpression getActionExpression()
immediate
プロパティの値に応じて、リクエスト処理ライフサイクルのリクエスト値の適用フェーズまたはアプリケーションの呼び出しフェーズ中に、ユーザーがこのUIComponent
をアクティブ化した場合、呼び出されるアプリケーションアクションを指すMethodExpression
を返します。- 次で指定:
- インターフェース
ActionSource2
のgetActionExpression
- 戻り値:
- アクション式。
- 導入:
- 2.2
setActionExpression
public void setActionExpression(MethodExpression actionExpression)
immediate
プロパティの値に応じて、リクエスト処理ライフサイクルのリクエスト値の適用フェーズまたはアプリケーションの呼び出しフェーズ中に、このUIComponent
がユーザーによってアクティブ化された場合に呼び出されるアプリケーションアクションを指すMethodExpression
を設定します。このような式で参照されるメソッドはすべて、
String
の戻り値の型でパブリックであり、パラメーターを受け入れない必要があります。- 次で指定:
- インターフェース
ActionSource2
のsetActionExpression
- パラメーター:
actionExpression
- アクション式。- 導入:
- 2.2
isOnPostback
public boolean isOnPostback()
true
の場合、このコンポーネントはポストバックで動作します。- 戻り値:
- ポストバックで動作する場合は
true
、それ以外の場合はfalse
。 - 導入:
- 2.2
setOnPostback
public void setOnPostback(boolean onPostback)
このコンポーネントがポストバックで動作するかどうかを制御します。
- パラメーター:
onPostback
- onPostback フラグ。- 導入:
- 2.2
isRendered
public boolean isRendered()
このコンポーネントが
decode(jakarta.faces.context.FacesContext)
メソッドで指定されたアクションを実行する必要がある場合は、true
を返します。- オーバーライド:
- クラス
UIComponentBase
のisRendered
- 戻り値:
- レンダリングする必要がある場合は
true
、それ以外の場合はfalse
。 - 導入:
- 2.2
setRendered
public void setRendered(boolean condition)
このコンポーネントの
if
プロパティを設定します。- オーバーライド:
- クラス
UIComponentBase
のsetRendered
- パラメーター:
condition
- プロパティの新しい値。- 導入:
- 2.2
broadcast
public void broadcast(FacesEvent event) throws AbortProcessingException
このコンポーネントインスタンスによって指定されたメソッド呼び出しを有効にして、
UICommand.broadcast(jakarta.faces.event.FacesEvent)
と同様に、ナビゲーションを実行する値を返します。次の条件のいずれかに該当する場合は、何もせずにすぐに戻ります。
レスポンスはすでに完了としてマークされています。
現在の
UIViewRoot
は、イベントのソースのUIViewRoot
とは異なります。
現在の
UIViewRoot
の viewId へのローカル参照を保存します。説明のため、この参照を viewIdBeforeAction とします。Application
からActionListener
を取得します。アクションを実行しないように、FacesContext.renderResponse()
メソッドをオーバーライドするFacesContextWrapper
の実装に現在のFacesContext
をラップします。現在のFacesContext
をFacesContextWrapper
インスタンスに設定します。現在の FacesContext でisProcessingBroadcast(jakarta.faces.context.FacesContext)
を呼び出すとtrue
が返されるようにします。これは、NavigationHandler
がこのメソッドを呼び出して、UIViewAction
の結果としてナビゲーションが行われているかどうかを判別するために必要です。ActionListener.processAction(jakarta.faces.event.ActionEvent)
を起動します。finally
ブロックで、元のFacesContext
を復元し、現在のコンテキストでisProcessingBroadcast(jakarta.faces.context.FacesContext)
を呼び出すとfalse
が返され、ラッパーが破棄されるようにします。processAction()
の呼び出し中にレスポンスが完了とマークされた場合は、それ以上のアクションは実行せずに戻ります。それ以外の場合は、processAction()
の呼び出し後に、FacesContext
のUIViewRoot
の viewId と viewIdBeforeAction を比較します。2 つの viewIds が同じで、decode(jakarta.faces.context.FacesContext)
の呼び出しによってキューに入れられたUIViewAction
イベントがもうない場合は、FacesContext.renderResponse()
を呼び出して戻ります。キューに入れられたUIViewAction
イベントの数はdecode(jakarta.faces.context.FacesContext)
の仕様で記録されているため、キューに入れられたUIViewAction
イベントがもうない場合は検出できます。それ以外の場合は、新しいUIViewRoot
でライフサイクルを実行します。- オーバーライド:
- クラス
UIComponentBase
のbroadcast
- パラメーター:
event
- 放送予定のFacesEvent
- 例外:
AbortProcessingException
- Jakarta Faces 実装に、現在のイベントでこれ以上の処理を実行しないことを通知しますIllegalArgumentExceptionSE
- このFacesEvent
の実装クラスがこのコンポーネントでサポートされていない場合NullPointerExceptionSE
-event
がnull
の場合- 導入:
- 2.2
decode
public void decode(FacesContext context)
スーパークラスからの動作をオーバーライドして
ActionEvent
をキューに入れると、このインスタンスに関連付けられているaction
またはactionListener
が呼び出される可能性があります。次のいずれかの条件に該当する場合は、何もしないでください。
現在のリクエストはポストバックであり、インスタンスはポストバックで動作しないように設定されています。
isOnPostback()
を参照してください。
.if
プロパティに記述されている条件はfalse
と評価されます。isRendered()
を参照
ActionEvent
をインスタンス化し、このコンポーネントインスタンスをソースとして渡します。ActionEvent
のphaseId
プロパティを次のように設定します。このコンポーネントインスタンスが
setPhase(java.lang.String)
への呼び出しを伴う特定のライフサイクルフェーズで構成されている場合は、それをphaseId
として使用します。immediate
プロパティの値が true の場合は、PhaseId.APPLY_REQUEST_VALUES
を使用します。それ以外の場合は、
PhaseId.INVOKE_APPLICATION
を使用します。
UIComponentBase.queueEvent(jakarta.faces.event.FacesEvent)
を呼び出してイベントをキューに入れます。ライフサイクルを通じて、この実行でこのようにキューに入れられたイベントの数を追跡します。この情報は、broadcast(jakarta.faces.event.FacesEvent)
での処理中に必要です。- オーバーライド:
- クラス
UIComponentBase
のdecode
- パラメーター:
context
-FacesContext
(処理中のリクエスト)- 導入:
- 2.2