クラス CaseTag

すべての実装されたインタフェース:
BodyTag, IterationTag, JspTag, Tag, TryCatchFinally, Serializable

public class CaseTag extends CommonTagSupport
case タグは、上位の switch タグの key とマッチした場合に、処理を行います。 case タグの以下の属性について、説明します。 match : switch_key.match( case_match ) でマッチした場合は、BODY が処理されます。 isDefault: trueに設定すると、どのcase にもマッチしなかった場合に処理されます(初期値:false) isBreak : 通常、最初にマッチした段階で、switch 処理を抜けます(初期値:true) isNull : trueに設定すると、switchのkeyが、null(またはゼロ文字列)の場合、マッチします(初期値:false)
関連項目:
変更履歴:
5.2.3.0 (2010/12/01) 新規追加
機能分類
画面制御
形式サンプル:
●形式:<og:switch key="・・・" > <og:case match="A" > ・・・ </og:case> <og:case match="B" > ・・・ </og:case> <og:case match="C" > ・・・ </og:case> <og:case isDefault="true" > ・・・ </og:case> </og:switch> ●body:あり(EVAL_BODY_INCLUDE:BODYをインクルードし、{@XXXX} は解析しません) ●Tag定義: <og:case match 【TAG】switch-case のマッチ条件(case_match)を指定します isDefault 【TAG】どのcase にもマッチしなかった場合に処理する case 文かどうかを指定します(初期値:false) isBreak 【TAG】マッチした以降に継続処理を行わない(ブレイクする)かどうかを指定(初期値:true) isNull 【TAG】switchのkeyが、null(またはゼロ文字列)の場合、マッチするかどうか[true/false]を設定します(初期値:false) debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) > ... Body ... </og:case> ●使用例 <og:switch key="{@PARAM}" > <og:case match="A" > 処理A </og:case> <og:case match="B" > 処理B </og:case> <og:case match="C" > 処理C </og:case> <og:case isDefault="true" > 処理X </og:case> </og:switch> ・switch の key に対して、case の match に指定された値が、マッチ(switch_key.match( case_match )) した場合に、case の BODY 部分が処理されます。 マッチしなければ、BODY部は、スキップされます。 ・isDefault="true" の場合は、どれとも マッチしなかった場合に、実行されます。 ・Javaの switch-case 文は、最初に処理された case 以降を処理します。通常は、break を入れて 後続処理を実行されないようにしています。 この、switch-case タグは、caseタグの isBreak 属性で制御します。初期値が isBreak="true" に、 なっているため、通常は、どれかの case が実行された段階で、switchの処理は、終了されます。 isBreak="false" にすると、switchから抜けずに、継続して case との match を実行します。 この場合、Java等と異なるのは、直後のcase文が実行されるのではなく、あくまで match 作業が 継続されるということです。つまり、複数の case で処理を行いたい場合は、isBreak="false" に すると同時に、match 条件もそれぞれで、マッチするように設定する必要があります。 <og:switch key="{@PARAM}" > <og:case match="[1]" isBreak="false" > 処理A </og:case> <og:case match="[12]" isBreak="false" > 処理B </og:case> <og:case match="[123]" isBreak="false" > 処理C </og:case> <og:case isNull="true" > 処理X </og:case> <og:case isDefault="true" > 処理Y </og:case> </og:switch> ・上記指定では、isBreak="false" が指定されているため、マッチした後も継続して判定処理が実施されます。 ・上記例で言うと、PARAM が "1" の場合、上記3つともにマッチします。 ・isNull="true" は、switch の key が null の場合に成立します。(null とは、ゼロ文字列も含む)
導入されたバージョン:
JDK1.6,
  • コンストラクタの詳細

    • CaseTag

      public CaseTag()
      デフォルトコンストラクター
      変更履歴:
      6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
  • メソッドの詳細

    • doStartTag

      public int doStartTag()
      Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
      定義:
      doStartTag インタフェース内 Tag
      オーバーライド:
      doStartTag クラス内 CommonTagSupport
      戻り値:
      後続処理の指示
    • doEndTag

      public int doEndTag()
      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
      doEndTag インタフェース内 Tag
      オーバーライド:
      doEndTag クラス内 CommonTagSupport
      戻り値:
      後続処理の指示
    • release2

      protected void release2()
      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
      release2 クラス内 CommonTagSupport
    • setMatch

      public void setMatch(String mkey)
      【TAG】switch-case のマッチ条件(case_match)を指定します。
      パラメータ:
      mkey - マッチ条件
      説明:
      switch_key.match( case_match ) でマッチした場合は、BODY が処理されます。
    • setIsDefault

      public void setIsDefault(String flag)
      【TAG】どのcase にもマッチしなかった場合に処理する case 文かどうかを指定します(初期値:false)。
      パラメータ:
      flag - デフォルト処理 [true:する/false:しない]
      説明:
      trueに設定すると、どのcase にもマッチしなかった場合に処理されます このタグそのものがなにも出力しません。(つまり条件から消えます。) BODY 部に記述することが可能です。その場合は、value 属性になにも設定できません。 初期値は、false:default case 文ではない です。
    • setIsBreak

      public void setIsBreak(String flag)
      【TAG】マッチした以降に継続処理を行わない(ブレイクする)かどうかを指定(初期値:true)。
      パラメータ:
      flag - ブレイク可否 [true:する/false:しない(=継続処理する)]
      説明:
      true に設定すると、マッチした段階で、ブレイクします。 Javaの switch-case 文は、最初に処理された case 以降を処理します。通常は、break を入れて 後続処理を実行されないようにしています。 この、switch-case タグは、caseタグの break 属性で制御します。初期値が break="true" に、 なっているため、通常は、どれかの case が実行された段階で、switchの処理は、終了されます。 break="false" にすると、switchから抜けずに、継続して case との match を実行します。 この場合、Java等と異なるのは、直後のcase文が実行されるのではなく、あくまで match 作業が 継続されるということです。つまり、複数の case で処理を行いたい場合は、break="false" に すると同時に、match 条件もそれぞれで、マッチするように設定する必要があります。 初期値は、true:ブレイクする です。
    • setIsNull

      public void setIsNull(String flag)
      【TAG】switchのkeyが、null(またはゼロ文字列)の場合、マッチするかどうか[true/false]を設定します(初期値:false)。
      パラメータ:
      flag - nullマッチ判定 [true:する/false:しない]
      説明:
      trueに設定すると、switchのkeyが、null(またはゼロ文字列)の場合、マッチします。 初期値のfalse にすると、キーが null でない場合だけ、マッチ処理を実行します。 case の条件判定で使用されます。 初期値は、false(null でない) です。
    • toString

      public String toString()
      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
      toString クラス内 CommonTagSupport
      戻り値:
      このクラスの文字列表現
      このメソッドは、nullを返しません