public abstract class LoopTagSupport extends TagSupport implements LoopTag, IterationTag, TryCatchFinally
反復タグの実装を容易にする基本サポートクラス。
ほとんどの反復タグは実際の反復動作に関して同じように動作するため、Jakarta Standard Tag Library は実装を容易にするためにこの基本サポートクラスを提供します。多くの反復タグはこれを継承し、ハンドラーが反復するコンテンツを提供するために hasNext() メソッドと next() メソッドを実装するだけです。
特に、この基本クラスは以下のサポートを提供します。
これらのタスクをサポートするために、LoopTagSupport には反復処理を変更する制御変数が含まれています。これらの制御変数が変換時に必要な情報または希望する情報を表す場合、これらの制御変数にアクセサーが提供されます (例: var、varStatus)。その他の変数については、サブクラスによってアクセサーの受け取り方法の実装が異なる可能性があるため、ここでアクセサーを提供することはできません。たとえば、あるサブクラスは String を受け取り、式評価を使用して特定の型のオブジェクトに変換します。他のサブクラスはオブジェクトを直接受け取る場合があります。また、そのような情報を外部の制御に公開したくないサブクラスもあります。
| 修飾子と型 | フィールドと説明 |
|---|---|
protected int | begin 開始インデックス ('begin' 属性) |
protected boolean | beginSpecified'begin' が指定されたかどうかを示すブールフラグ。 |
protected ValueExpression | deferredExpression 遅延式(存在する場合) |
protected int | end 反復の終了インデックス('end' 属性)。 |
protected boolean | endSpecified「終了」が指定されたかどうかを示すブールフラグ。 |
protected StringSE | itemId 属性公開コントロール |
protected StringSE | statusId 属性公開コントロール |
protected int | step 反復ステップ ('step' 属性) |
protected boolean | stepSpecified「ステップ」が指定されたかどうかを示すブールフラグ。 |
id, pageContextEVAL_BODY_AGAINEVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE| コンストラクターと説明 |
|---|
LoopTagSupport() 新しい LoopTagSupport を構築します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
int | doAfterBody() 必要に応じて反復を継続します。つまり、(a)より多くのアイテムがあり、(b)「終了」を超えない場合(「ステップ」がある場合)。 |
void | doCatch(ThrowableSE t) 指定された Throwable を再スローします。 |
void | doFinally() この LoopTagSupport が設定した属性を削除します。 |
int | doStartTag() 最初のアイテムの処理から反復を開始します。 |
ObjectSE | getCurrent() イテレーションの現在のアイテムを取得します。 |
protected StringSE | getDelims() |
LoopTagStatus | getLoopStatus()「ステータス」オブジェクトを取得して、反復の現在のラウンドに関する情報を提供します。 |
protected abstract boolean | hasNext() 反復する項目の可用性に関する情報を返します。 |
protected abstract ObjectSE | next() タグが反復する次のオブジェクトを返します。 |
protected abstract void | prepare() 単一のタグ呼び出しの準備をします。 |
void | release() この LoopTagSupport が持つ(または継承する)リソースを解放します。 |
void | setVar(StringSE id)'var' 属性を設定します。 |
void | setVarStatus(StringSE statusId)'varStatus' 属性を設定します。 |
protected void | validateBegin() "begin" プロパティが賢明であることを確認し、そうでない場合は伝播すると予想される例外をスローします。 |
protected void | validateEnd() "end" プロパティが賢明であることを確認します。そうでない場合は、伝播することが予想される例外をスローします。 |
protected void | validateStep() "step" プロパティが賢明であることを確認し、そうでない場合は伝播すると予想される例外をスローします。 |
doEndTag, findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValuecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEdoEndTag, getParent, setPageContext, setParentprotected int begin
protected int end
protected int step
protected boolean beginSpecified
protected boolean endSpecified
protected boolean stepSpecified
protected StringSE itemId
protected StringSE statusId
protected ValueExpression deferredExpression
public LoopTagSupport()
protected abstract ObjectSE next() throws JspTagException
タグが反復する次のオブジェクトを返します。このメソッドは、LoopTagSupport の具象サブクラスによって提供され、どのオブジェクトを反復処理する必要があるかについて基本ロジックに通知する必要があります。
このメソッドは通常、イテレーターによってサポートされることが予想されますが、常にそうであるとは限りません。特に、次のオブジェクトを取得すると例外がスローされる可能性がある場合、このメソッドを使用すると、その例外を JspTagException として JSP コンテナーに戻すことができます。スタンドアロンのイテレータはこれを行うことができません。(これが、LoopTagSupport がサブタグからイテレータを単に要求しない理由を説明しています。)
NoSuchElementExceptionSE - next() が呼び出されたが、利用可能な新しい要素がない場合 JspTagException - その他の予期しない例外の場合 protected abstract boolean hasNext()
throws JspTagException反復する項目の可用性に関する情報を返します。このメソッドは、サポートする基本クラスによって提供される反復ロジックを支援するために、LoopTagSupport の具象サブクラスによって提供される必要があります。
このタグの目的と期待の詳細については、次を参照してください。
JspTagExceptionnext()protected abstract void prepare()
throws JspTagException単一のタグ呼び出しの準備をします。具体的には、サブクラスが hasNext() および next() への呼び出しを準備できるようにします。サブクラスは、prepare() がスーパークラスでの doStartTag() の呼び出しごとに 1 回呼び出されると想定できます。
public void release()
Tag の release TagSupport の release Tag.release()public int doStartTag()
throws JspExceptionTag の doStartTag TagSupport の doStartTag JspException - このタグの処理中にエラーが発生した場合 Tag.doStartTag()public int doAfterBody()
throws JspExceptionIterationTag の doAfterBody TagSupport の doAfterBody JspException - このタグの処理中にエラーが発生した場合 IterationTag.doAfterBody()public void doFinally()
これらの属性は、NESTED スコープのスクリプト変数をサポートすることを目的としているため、属性空間をそのままにして属性スペースを汚染することは避けたいです。
TryCatchFinally の doFinally public void doCatch(ThrowableSE t) throws ThrowableSE
TryCatchFinally の doCatch t - このタグをナビゲートするスロー可能な例外。ThrowableSE - 例外がネストチェーンのさらに上に再スローされる場合。public ObjectSE getCurrent()
LoopTagLoopTag の getCurrent public LoopTagStatus getLoopStatus()
LoopTagLoopTag の getLoopStatus protected StringSE getDelims()
public void setVar(StringSE id)
id - 反復の現在の項目を格納するエクスポートされたスコープ付き変数の名前。public void setVarStatus(StringSE statusId)
statusId - 反復のステータスを格納するエクスポートされたスコープ付き変数の名前。protected void validateBegin()
throws JspTagExceptionprotected void validateEnd()
throws JspTagExceptionprotected void validateStep()
throws JspTagExceptionCopyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.