20

さまざまな定数の名前を定義するクラスがあります。

class Constants {
    public static final String ATTR_CURRENT_USER = "current.user";
}

次のようなScriptlet コードを使用せずに、JSP 内でこれらの定数を使用したいと考えています。

<%@ page import="com.example.Constants" %>
<%= Constants.ATTR_CURRENT_USER %>

この機能を提供するタグが Apache非標準taglib にあるようです。しかし、この taglib をダウンロードする方法が見つかりません。廃止され、機能が別の (Apache) タグ ライブラリに移動されたのではないかと考え始めています。

このライブラリをどこで入手できるか、または入手できない場合は、スクリプトレット コードを使用せずに JSP 内の定数にアクセスできる他の方法があるかどうかを知っている人はいますか?

乾杯、ドン

4

6 に答える 6

4

アプリケーションの起動時に、ConstantsクラスをservletContextに追加して、任意のjspページでアクセスできます。

servletContext.setAttribute("Constants", com.example.Constants);

次に、jspページでアクセスします

<c:out value="${Constants.ATTR_CURRENT_USER}"/>

(定数ごとにゲッターを作成する必要がある場合があります)

于 2008-09-24T14:17:36.437 に答える
1

同じ機能を提供する別のタグライブラリがあることがわかりました。列挙型定数でも機能します。

于 2008-09-24T16:25:19.733 に答える
1

JSP での定数へのアクセスの複製のように見えます(スクリプトレットなし)

私の答えは:

EL では静的プロパティにアクセスできません。私が使用する回避策は、静的な値に自分自身を割り当てる非静的変数を作成することです。

public final static String MANAGER_ROLE = 'manager';
public String manager_role = MANAGER_ROLE;

私は lombok を使用してゲッターとセッターを生成しているので、それで十分です。EL は次のようになります。

${bean.manager_role}

https://rogerkeays.com/access-java-static-methods-and-constants-from-elの完全なコード

于 2012-07-16T20:56:21.743 に答える
0

どのような機能を使用したいですか? そのタグは、クラス名とフィールド名で任意の public クラス フィールドにアクセスできるようにする必要がありますか?

スクリプトレットのリンクはコンパイル時に行われますが、taglib クラスのフィールド アクセスでは、実行時にリフレクションなどの Java API を使用する必要があります。本当に必要ですか?

于 2008-09-24T15:25:50.827 に答える
0

私は自分のプロジェクトで jakarta-taglibs-unstandard-20060829.jar を使用しますが、あなたの言う通り、もうダウンロードできないようです

そのライブラリを取得するためにpom.xmlにそれを持っていますが、そのライブラリがローカルリポジトリにあるためにのみ機能すると思います(公式リポジトリでは見つかりません):

    <dependency>
        <groupId>jakarta</groupId>
        <artifactId>jakarta-taglibs-unstandard</artifactId>
        <version>20060829</version>
    </dependency>

別の選択肢があるかどうかはわかりません。

JSP で定数にアクセスする良い方法だったので、そう願っています。

于 2008-09-24T16:33:22.147 に答える
-3

なぜJSPに定数の値を出力したいのですか?確かに、JSPでオブジェクトをセッションから抽出し、それらを提示する前に要求できるように、それらを定義していますか?

<%@ page import = "com.example.Constants"%>
<%@ page import = "com.example.model.User"%>
<%
ユーザーuser=(ユーザー)session.getAttribute(Constants.ATTR_CURRENT_USER);
%>

<h1>ようこそ<%= user.getFirstName()%> </ h1>

于 2008-09-24T14:11:24.860 に答える