public abstract class LoopTagSupport extends TagSupport implements LoopTag, IterationTag, TryCatchFinally
反復タグの実装を容易にする基本サポートクラス。
ほとんどの反復タグは実際の反復動作に関して同じように動作するため、Jakarta Standard Tag Library は実装を容易にするためにこの基本サポートクラスを提供します。多くの反復タグはこれを継承し、ハンドラーが反復するコンテンツを提供するために hasNext() メソッドと next() メソッドを実装するだけです。
特に、この基本クラスは以下のサポートを提供します。
これらのタスクをサポートするために、 LoopTagSupport には、反復を変更するように機能する特定の制御変数が含まれています。変数が変換時に必要または必要とされる情報を表す場合(たとえば、 var 、 varStatus )、これらの制御変数にアクセサーが提供されます。他の変数の場合、サブクラスはそれらのアクセサーの受信方法の実装が異なる場合があるため、ここではアクセサーを提供できません。たとえば、1 つのサブクラスが 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, pageContext
EVAL_BODY_AGAIN
EVAL_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, setValue
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
doEndTag, getParent, setPageContext, setParent
protected 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 の具象サブクラスによって提供される必要があります。
このタグの目的と期待の詳細については、次を参照してください。
JspTagException
next()
protected abstract void prepare() throws JspTagException
単一のタグ呼び出しの準備をします。具体的には、サブクラスが hasNext() および next() への呼び出しを準備できるようにします。サブクラスは、prepare() がスーパークラスでの doStartTag() の呼び出しごとに 1 回呼び出されると想定できます。
public void release()
Tag
の release
TagSupport
の release
Tag.release()
public int doStartTag() throws JspException
Tag
の doStartTag
TagSupport
の doStartTag
JspException
- このタグの処理中にエラーが発生した場合 Tag.doStartTag()
public int doAfterBody() throws JspException
IterationTag
の 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()
LoopTag
LoopTag
の getCurrent
public LoopTagStatus getLoopStatus()
LoopTag
LoopTag
の getLoopStatus
protected StringSE getDelims()
public void setVar(StringSE id)
id
- 反復の現在の項目を格納するエクスポートされたスコープ付き変数の名前。public void setVarStatus(StringSE statusId)
statusId
- 反復のステータスを格納するエクスポートされたスコープ付き変数の名前。protected void validateBegin() throws JspTagException
protected void validateEnd() throws JspTagException
protected void validateStep() throws JspTagException
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.