さまざまな定数の名前を定義するクラスがあります。
class Constants {
public static final String ATTR_CURRENT_USER = "current.user";
}
次のようなスクリプトレットコードを使用して、JSPなし内でこれらの定数を使用したいと思います。
<%@ page import="com.example.Constants" %>
<%= Constants.ATTR_CURRENT_USER %>
Apacheにタグがあるようです nstandard taglibこの機能を提供します。ただし、このtaglibをダウンロードする方法が見つかりません。非推奨になり、機能が別の(Apache)タグライブラリに移動されたかどうか疑問に思い始めていますか?
このライブラリをどこで入手できるか、または利用できない場合、スクリプトレットコードを使用せずにJSPの定数にアクセスできる他の方法があるかどうか、誰か知っていますか?
乾杯、ドン
アプリケーションの起動時に、ConstantsクラスをservletContextに追加して、任意のjspページでアクセスできます。
servletContext.setAttribute("Constants", com.example.Constants);
次に、jspページでアクセスします
<c:out value="${Constants.ATTR_CURRENT_USER}"/>
(定数ごとにゲッターを作成する必要がある場合があります)
JSPの定数へのアクセス(スクリプトレットなし) の複製のように見えます
私の答えは:
ELでは静的プロパティにアクセスできません。私が使用する回避策は、静的な値に自分自身を割り当てる非静的な変数を作成することです。
public final static String MANAGER_ROLE = 'manager';
public String manager_role = MANAGER_ROLE;
私はロンボクを使用してゲッターとセッターを生成しているので、それで十分です。 ELは次のようになります。
${bean.manager_role}
http://www.ninthavenue.com.au/Java-static-constants-in-jsp-and-jsf-el の完全なコード
同じ機能を提供する 別のタグライブラリ があることがわかりました。列挙型定数でも機能します。
どのような機能を使いたいですか?そのタグは、クラス名とフィールド名で任意のパブリッククラスフィールドにアクセスできるはずですか?
スクリプトレットのリンクはコンパイル時に行われますが、taglibクラスのフィールドアクセスでは、実行時のリフレクションとしてそのようなJava APIを使用する必要があります。本当に必要ですか?
私のプロジェクトではjakarta-taglibs-unstandard-20060829.jarを使用しますが、確かにそうです もうダウンロードできません 。
そのライブラリを取得するためにpom.xmlにそれを持っていますが、そのライブラリが現在私のローカルリポジトリにあるためにのみ機能すると思います(公式リポジトリにはありません):
<dependency>
<groupId>jakarta</groupId>
<artifactId>jakarta-taglibs-unstandard</artifactId>
<version>20060829</version>
</dependency>
別の選択肢があるかどうかはわかりません。
それがJSPの定数にアクセスする良い方法だったので、そう願っています。