JSP/EL で静的メソッドを呼び出すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-20 11:20:02
オリジナル
492 人が閲覧しました

How can I invoke static methods in JSP/EL?

JSP/EL での静的メソッドの呼び出し

JSP では、多くの場合、計算を実行したり、Java クラスから静的メソッドにアクセスしたりする必要があります。ただし、式言語 (EL) で静的メソッドを直接呼び出すことはサポートされていません。

シナリオ:

「バランス」属性を持つテーブルがあり、計算したいとします。 「Calculate」クラスの静的メソッドを使用して「amount」という新しい値を作成します。あなたが試したように、JSTL タグ内に埋め込まれたスクリプトレットは推奨されません。

EL 制限:

EL は、JavaBeans として作成したクラスのインスタンス メソッドのみを呼び出すことができます。 。インスタンスの一部ではない静的メソッドには、EL を通じて直接アクセスすることはできません。

解決策:

  1. インスタンスの作成メソッド:

    • メソッドを作成する静的メソッドをラップする Bean 内で、必要なパラメータを渡します。
    • 静的メソッドの代わりに EL のインスタンス メソッドを使用します。
  2. カスタム EL 関数の登録:

    • タグ ライブラリの作成カスタム EL 関数を宣言する記述子 (TLD) ファイル。
    • <%@taglib...%> を使用して JSP ページで TLD ファイルを構成します。ディレクティブ。
    • EL 式内で静的メソッドを内部的に呼び出すカスタム EL 関数を使用します。

インスタンスを使用した例メソッド:

public class Bean {

    private double balance;

    public double getAmount() {
        return Calculate.getAmount(balance);
    }

    // ...other methods
}
ログイン後にコピー
<c:forEach var="row" items="${rs.rows}">
    Amount: ${row.amount}  <!-- Invoke instance method -->
</c:forEach>
ログイン後にコピー

カスタム EL 関数の例:

<!-- functions.tld -->
<taglib>
    ...
    <function>
        <name>calculateAmount</name>
        <function-class>com.example.Calculate</function-class>
        <function-signature>double getAmount(double)</function-signature>
    </function>
    ...
</taglib>
ログイン後にコピー
<%@taglib uri="http://example.com/functions" prefix="f"%>
...
Amount: ${f:calculateAmount(row.balance)}  <!-- Invoke custom EL function -->
ログイン後にコピー

以上がJSP/EL で静的メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート