パッケージ jakarta.el

クラス OptionalELResolver

java.lang.ObjectSE
jakarta.el.ELResolver
jakarta.el.OptionalELResolver

public class OptionalELResolver extends ELResolver
OptionalSE のプロパティ解決、メソッド呼び出し、型変換の動作を定義します。

このリゾルバーは、OptionalSE のインスタンスである基本オブジェクトを処理します。

OptionalSE インスタンスは不変であるため、このリゾルバーは常に読み取り専用リゾルバーになります。

  • コンストラクターの詳細

    • OptionalELResolver

      public OptionalELResolver()
  • メソッドの詳細

    • getValue

      public ObjectSE getValue(ELContext context, ObjectSE base, ObjectSE property)
      指定された base オブジェクトで指定された property オブジェクトを解決しようとします。

      このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。

      次で指定:
      クラス ELResolvergetValue 
      パラメーター:
      context - この評価のコンテキスト。
      base - プロパティ値が返されるベースオブジェクト、またはトップレベル変数を解決する null
      property - 解決するプロパティまたは変数。
      戻り値:
      基本オブジェクトが OptionalSE で、Optional.isEmpty() が true を返す場合、結果の値は null になります。

      基本オブジェクトが OptionalSE で、Optional.isPresent() が true を返し、プロパティが null の場合、結果の値は基本オブジェクトで Optional.get() を呼び出した結果になります。

      基本オブジェクトが OptionalSE で、Optional.isPresent() が true を返し、プロパティが null でない場合、結果の値は、次のパラメーターを使用して ELContext.getELResolver() から取得した ELResolver を使用して ELResolver.getValue(ELContext, Object, Object) を呼び出した結果になります。

      • ELContext は現在のコンテキストです
      • 基本オブジェクトは、現在の基本オブジェクトに対して Optional.get() を呼び出した結果です。
      • プロパティオブジェクトは現在のプロパティオブジェクトです

      基本オブジェクトが OptionalSE でない場合、戻り値は未定義になります。

    • getType

      public ClassSE<?> getType(ELContext context, ObjectSE base, ObjectSE property)
      指定された base および property について、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) メソッドへの将来の呼び出しで value パラメーターとして渡されるオブジェクトに受け入れられる最も一般的な型を識別しようとします。

      このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。

      これは、常に getValue().getClass() と同じではありません。例: ArrayELResolver の場合、getType メソッドは配列のエレメント型を返します。これは、指定された配列エレメントに現在ある実際のエレメントの型のスーパークラスである可能性があります。

      リゾルバーまたはプロパティが読み取り専用の場合、このメソッドは null を返す必要があります。

      次で指定:
      クラス ELResolvergetType 
      パラメーター:
      context - この評価のコンテキスト。
      base - プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析する null
      property - 受け入れ可能な型を返すプロパティまたは変数。
      戻り値:
      基本オブジェクトが OptionalSE の場合、このリゾルバーのインスタンスは常に読み取り専用であるため、このメソッドは常に null を返します。

      基本オブジェクトが OptionalSE でない場合、戻り値は未定義になります。

    • setValue

      public void setValue(ELContext context, ObjectSE base, ObjectSE property, ObjectSE value)
      指定された base オブジェクトに指定された property オブジェクトの値を設定しようとします。

      このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は値が設定されていないと安全に想定できます。

      基本オブジェクトが OptionalSE の場合、このリゾルバーのインスタンスは常に読み取り専用であるため、このメソッドは常に PropertyNotWritableException をスローします。

      次で指定:
      クラス ELResolversetValue 
      パラメーター:
      context - この評価のコンテキスト。
      base - プロパティ値を設定する基本オブジェクト、またはトップレベル変数を設定する null
      property - 設定するプロパティまたは変数。
      value - プロパティまたは変数に設定する値。
    • isReadOnly

      public boolean isReadOnly(ELContext context, ObjectSE base, ObjectSE property)
      特定の base および property について、ELResolver.setValue(jakarta.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object) の呼び出しが常に失敗するかどうかを判断しようとします。

      このリゾルバーが指定された(ベース、プロパティ)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。

      次で指定:
      クラス ELResolverisReadOnly 
      パラメーター:
      context - この評価のコンテキスト。
      base - プロパティ値を分析するベースオブジェクト、またはトップレベル変数を分析する null
      property - 読み取り専用ステータスを返すプロパティまたは変数。
      戻り値:
      基本オブジェクトが OptionalSE の場合、このリゾルバーのインスタンスは常に読み取り専用であるため、このメソッドは常に true を返します。

      基本オブジェクトが OptionalSE でない場合、戻り値は未定義になります。

    • getCommonPropertyType

      public ClassSE<?> getCommonPropertyType(ELContext context, ObjectSE base)
      base オブジェクトが指定された場合、このリゾルバーが property 引数に対して受け入れる最も一般的な型を返します。この方法の 1 つの用途は、ツールが自動補完を支援することです。

      これは、ツールが自動補完を支援し、リゾルバーが配列への整数インデックスなどのプリミティブ値を受け入れることを表現する方法も提供します。例: ArrayELResolver は int を property として受け入れるため、戻り値は Integer.class になります。

      次で指定:
      クラス ELResolvergetCommonPropertyType 
      パラメーター:
      context - この評価のコンテキスト。
      base - 最も一般的なプロパティ型を返す基本オブジェクト、またはこのリゾルバーが評価できるトップレベルの変数のセットを列挙する null
      戻り値:
      基本オブジェクトが OptionalSE の場合、このメソッドは常に Object.class を返します。

      基本オブジェクトが OptionalSE でない場合、戻り値は未定義になります。

    • convertToType

      public <T> T convertToType(ELContext context, ObjectSE obj, ClassSE<T> type)
      オブジェクトを特定の型に変換します。

      変換中にエラーが発生すると、ELException がスローされます。

      オーバーライド:
      クラス ELResolverconvertToType 
      パラメーター:
      context - この評価のコンテキスト。
      obj - 変換するオブジェクト。
      type - 変換のターゲット型。
      戻り値:
      基本オブジェクトが OptionalSE であり、Optional.isEmpty() が true を返す場合、このメソッドは null をリクエストされた type に強制変換した結果を返します。

      基本オブジェクトが OptionalSE であり、Optional.isPresent() が true を返す場合、このメソッドは Optional#get() をリクエストされた type に強制変換した結果を返します。

      基本オブジェクトが OptionalSE でない場合、戻り値は未定義になります。

    • invoke

      public ObjectSE invoke(ELContext context, ObjectSE base, ObjectSE method, ClassSE<?>[] paramTypes, ObjectSE[] params)
      指定された base オブジェクトで指定された method を解決して呼び出すことを試みます。

      このリゾルバーが指定された(ベース、メソッド)ペアを処理する場合、戻る前に、リゾルバーによって ELContext オブジェクトの propertyResolved プロパティを true に設定する必要があります。このメソッドが呼び出された後、このプロパティが true でない場合、呼び出し元は戻り値を無視する必要があります。

      ELResolver を継承する既存のクラスが機能し続けることができるように、null を返すデフォルトの実装が提供されています。

      オーバーライド:
      クラス ELResolverinvoke 
      パラメーター:
      context - この評価のコンテキスト。
      base - メソッドを呼び出す Bean
      method - 呼び出すメソッドの単純な名前。String に強制変換されます。
      paramTypes - メソッドの仮パラメーター型を宣言された順序で識別する Class オブジェクトの配列。メソッドにパラメーターがない場合は、空の配列を使用します。null にすることができます。その場合、メソッドの仮パラメーターの型は不明であると見なされます。
      params - メソッドに渡すパラメーター。パラメーターがない場合は null
      戻り値:
      基本オブジェクトが OptionalSE であり、Optional.isEmpty() が true を返す場合、このメソッドは null を返します。

      基本オブジェクトが OptionalSE であり、Optional.isPresent() が true を返す場合、このメソッドは、指定されたパラメーターを使用して Optional.get() を呼び出すことによって取得されたオブジェクトに対して指定されたメソッドを呼び出した結果を返します。

      基本オブジェクトが OptionalSE でない場合、戻り値は未定義になります。