バッキング Bean と XHTML ファイルの両方から定数にアクセスできるようにするにはどうすればよいですか?
バッキング Bean では、明らかに簡単です。それらは単なる Java クラスであるため、「通常の」Java の方法と変わりません。enum
s またはpublic static final
フィールドを使用できます。見解では、これは別の話です。つまり、今後のバージョン 3.0 まで、EL は定数をまったくサポートしません。
ELは文字列比較で列挙型を暗黙的にサポートしているため、列挙型を使用することをお勧めします。コンパイル時/実行時の型の安全性チェックは行いませんが、列挙名を文字列として使用できます。例えば
<h:someComponent ... rendered="#{order.status == 'SHIPPING'}" />
より自己文書化されたコードと実行時チェックを好む場合 (いいえ、コンパイル時チェックは不可能です)、OmniFaces <o:importConstants>
の使用を検討できます。
<o:importConstants type="com.example.OrderStatus" />
<h:someComponent ... rendered="#{order.status == OrderStatus.SHIPPING}" />
これは IMO で、もう少しぎこちないだけです。ただし、ランタイム チェックは開発中は便利です。タイプミスは簡単に見落とされます。
今後の EL 3.0 ( JSR-341、Java EE 7 の一部) では、同じ方法で定数を参照できます。ELで定数を参照する方法も参照してください。これには、標準の JSP/Facelets タグがないため、定数のプログラムによるインポートのみが必要です。