パッケージ jakarta.faces.component

クラス UISelectMany

  • 実装されたすべてのインターフェース:
    EditableValueHolderPartialStateHolderStateHolderTransientStateHolderValueHolderComponentSystemEventListenerFacesListenerSystemEventListenerHolderEventListenerSE
    既知の直属サブクラス
    HtmlSelectManyCheckboxHtmlSelectManyListboxHtmlSelectManyMenu

    public class UISelectMany
    extends UIInput

    UISelectManyUIComponent であり、利用可能なオプションの個別のセットの中から 0 個以上のアイテムをユーザーが選択したことを表します。ユーザーは選択した値を変更できます。オプションで、コンポーネントの value プロパティに配列または Collection として格納することにより、現在選択されている 0 個以上のアイテムを使用してコンポーネントを事前構成できます。

    このコンポーネントは通常、選択ボックスまたはチェックボックスのグループとしてレンダリングされます。

    デフォルトでは、rendererType プロパティを "jakarta.faces.Listbox" に設定する必要があります。この値は、setRendererType() メソッドを呼び出すことで変更できます。

    このコンポーネントの Renderer は、getConvertedValue() で次のロジックを実行する必要があります。

    次のアルゴリズムを使用して Converter を取得します。

    コンポーネントに Converter が接続されている場合は、それを使用します。

    そうでない場合は、value の ValueExpression を探します(存在する場合)。ValueExpression は、次のようなものを指している必要があります。

    • プリミティブの配列(int[] など)。このプリミティブ型については、登録済みのクラス別 Converter を検索してください。

    • オブジェクトの配列(Integer[] や String[] など)。登録されたクラス別 Converter で、基になる要素型を検索します。

    • java.util.Collection。値を変換しないでください。代わりに、レンダリングレスポンス時に行われたのとまったく同じように、提供された使用可能なオプションのセットを文字列に変換し、送信された値と一致する場合は、使用可能なオプションをオブジェクトとしてコレクションに追加します

    何らかの理由で Converter が見つからない場合は、型を文字列配列と見なします。

    選択された Converter (存在する場合) を使用して、リクエストからの値配列の各要素を適切な型に変換し、各変換の結果を、説明のために targetForConvertedValues と呼ばれるデータ構造に格納します。次のアルゴリズムを使用して targetForConvertedValues を作成します

    • コンポーネントに value の ValueExpression があり、式の型が配列である場合、targetForConvertedValues は予想される型の新しい配列になります。

    • コンポーネントに value の ValueExpression がある場合、modelType を値式の型とします。modelType が Collection の場合、次の操作を実行して targetForConvertedValues に到達します。

      • コンポーネントに、キー "collectionType" の属性を問い合わせます (引用符は不要)。そのキーの値がある場合、その値は完全修飾 Java クラス名である String、Class オブジェクト、または String または Class に評価される ValueExpression である必要があります。いずれの場合も、値は Collection を実装するクラスの具象型を識別するために使用されます。説明上、これを collectionType と呼びます。targetForConvertedValues をcollectionType で指定された具象クラスによって実装された Collection の新しいインスタンスとします。collectionType が見つからない場合、または collectionType で指定された具象クラスによって実装された Collection のインスタンスを作成できない場合は、正しくローカライズされたエラーメッセージとともに FacesException をスローします。ConverterException ではなく FacesException がスローされることに注意してください。これは、このケースがエンドユーザエラーではなく開発者エラーによってのみ発生するためです。

      • "collectionType" 属性がない場合は、コンポーネントで getValue() を呼び出します。結果は Collection を実装します。結果が Cloneable も実装する場合は、targetForConvertedValues をその clone() メソッドを呼び出した結果とし、次に複製された Collection で clear() を呼び出します。何らかの理由で値を複製できない場合は、メッセージをログに記録して次の手順に進みます。

      • modelType が具象クラスである場合、targetForConvertedValues はそのクラスの新しいインスタンスになります。それ以外の場合、targetForConvertedValues の具象型は次の表から取得されます。すべてのクラスは java.util パッケージにあります。すべてのコレクションは、リクエストからの値配列の長さに等しい初期容量で作成する必要があります。

        modelType から targetForConvertedValues へのマッピング
        modelTypetargetForConvertedValues は次のインスタンスである必要があります
        SortedSetTreeSet
        QueueLinkedList
        SetHashSet
        他に何か ArrayList
    • コンポーネントに value の ValueExpression がない場合、targetForConvertedValues は Object 型の配列になります。

    変換された値を入力して targetForConvertedValues を返します。

    • フィールドの詳細

      • COMPONENT_FAMILY

        public static final StringSE COMPONENT_FAMILY

        このコンポーネントの標準コンポーネントファミリ。

        関連事項:
        定数フィールド値
      • INVALID_MESSAGE_ID

        public static final StringSE INVALID_MESSAGE_ID

        使用可能なオプションと一致しない値が指定された場合に作成される FacesMessage のメッセージ ID。

        関連事項:
        定数フィールド値
    • コンストラクターの詳細

      • UISelectMany

        public UISelectMany()

        デフォルトのプロパティ値で新しい UISelectMany インスタンスを作成します。

    • メソッドの詳細

      • getFamily

        public StringSE getFamily()
        クラスからコピーされた説明: UIComponent

        このコンポーネントが属するコンポーネントファミリの識別子を返します。この識別子は、rendererType プロパティの値と組み合わせて、このコンポーネントインスタンスに適切な Renderer を選択するために使用できます。このメソッドは null を返すべきではないことに注意してください

        オーバーライド:
        クラス UIInputgetFamily 
        戻り値:
        コンポーネントファミリ(null 以外)。
      • getSubmittedValue

        public ObjectSE getSubmittedValue()
        クラスからコピーされた説明: UIInput

        この UIInput コンポーネントの submittedValue 値を返します。このメソッドは、このコンポーネントの decode() および validate() メソッド、または対応する Renderer でのみ使用する必要があります。

        次で指定:
        インターフェース EditableValueHoldergetSubmittedValue 
        オーバーライド:
        クラス UIInputgetSubmittedValue 
        戻り値:
        送信された値。
      • setSubmittedValue

        public void setSubmittedValue​(ObjectSE submittedValue)
        クラスからコピーされた説明: UIInput

        この UIInput コンポーネントの submittedValue 値を設定します。このメソッドは、このコンポーネントの decode() および validate() メソッド、または対応する Renderer でのみ使用する必要があります。

        次で指定:
        インターフェース EditableValueHoldersetSubmittedValue 
        オーバーライド:
        クラス UIInputsetSubmittedValue 
        パラメーター:
        submittedValue - 新しく送信された値
      • getSelectedValues

        public ObjectSE[] getSelectedValues()

        現在選択されている値を返します。現在選択されている値がない場合は null を返します。これは、getValue() の型安全なエイリアスです。

        戻り値:
        選択した値、または null
      • setSelectedValues

        public void setSelectedValues​(ObjectSE[] selectedValues)

        現在選択されている値を設定するか、null を設定して、現在選択されている値がないことを示します。これは、setValue() の型安全なエイリアスです。

        パラメーター:
        selectedValues - 新しく選択された値 (もしあれば)
      • getValueExpression

        public ValueExpression getValueExpression​(StringSE name)

        selectedValues の ValueExpression がリクエストされた場合、value に設定された ValueExpression を返します。それ以外の場合は、このメソッドのデフォルトのスーパークラス処理を実行します。

        オーバーライド:
        クラス UIComponentgetValueExpression 
        パラメーター:
        name - ValueExpression を取得する属性またはプロパティの名前
        戻り値:
        値式、または null
        例外:
        NullPointerExceptionSE - name が null の場合
        導入:
        1.2
      • compareValues

        protected boolean compareValues​(ObjectSE previous,
                                        ObjectSE value)

        新しい値が前の値と異なる場合は、true を返します。値の比較は、要素の順序に敏感であってはなりません。

        オーバーライド:
        クラス UIInputcompareValues 
        パラメーター:
        previous - このコンポーネントの古い値
        value - このコンポーネントの新しい値
        戻り値:
        新しい値が前の値と異なる場合は true、それ以外の場合は false
      • validateValue

        protected void validateValue​(FacesContext context,
                                     ObjectSE value)

        UIInput から継承された標準的な検証動作に加えて、任意の指定された値は、利用可能なオプションの 1 に等しいことを確認してください。各オプションを比較する前に、式言語の強制規則に従って、オプションの値の型をこのコンポーネントの値の型に強制変換します。指定された値がどのオプションとも等しくない場合は、エラーメッセージをキューに入れ、valid プロパティを false に設定します。

        このメソッドは、単一の値である値引数、または Collection または値の配列である値引数を明示的にサポートする必要があります。

        UIInput.isRequired() が true を返し、現在の値が UISelectItem.isNoSelectionOption() メソッドが true を返す内部 UISelectItem の値と等しい場合は、エラーメッセージをキューに入れ、valid プロパティを false に設定します。

        オーバーライド:
        クラス UIInputvalidateValue 
        パラメーター:
        context - 現在のリクエストの FacesContext
        value - メンバーシップをテストするために変換された値。
        例外:
        NullPointerExceptionSE - context が null の場合