1. ホーム
  2. jsf

[解決済み] JSFでEL empty演算子はどのように動作しますか?

2023-03-25 09:53:42

質問

JSFでは、EL empty演算子を使って、コンポーネントをレンダリングするかしないかを決めることができます。

rendered="#{not empty myBean.myList}"

私が理解したところでは、この演算子はヌルチェックとして働くだけでなく、リストが空かどうかのチェックも行います。

独自のクラスのオブジェクトに対して空チェックを行いたいのですが、どのインターフェース、またはインターフェースの一部を実装する必要があるのでしょうか? また、empty演算子はどのインターフェースと互換性があるのでしょうか?

どのように解決するのですか?

から EL 2.2仕様 (下の"Click here to download the spec for evaluation"のものを入手)。

<ブロッククオート

1.10 Empty Operator - (空の演算子) empty A

empty 演算子は前置演算子で、値が空であるかどうかを判断するために使われます。 であるかどうかを判断するために使用することができます。

を評価するために empty A

  • もし Anull を返します。 true
  • そうでなければ、もし A が空文字列であれば true
  • それ以外の場合、もし A が空の配列であれば true
  • それ以外の場合、もし A が空の Map を返します。 true
  • そうでなければ、もし A が空の Collection を返します。 true
  • それ以外の場合は false

ということで、インターフェイスを考えると、動作するのは Collection Map のみです。あなたの場合、私は Collection がベストな選択です。あるいは、Javabeanのようなオブジェクトであれば Map . いずれにせよ、カバーの下には isEmpty() メソッドが実際のチェックに使われます。実装できない、あるいは実装したくないインターフェイスメソッドに対しては UnsupportedOperationException .