Heim  >  Artikel  >  Java  >  Wie kann ich statische Methoden in JSP/EL aufrufen?

Wie kann ich statische Methoden in JSP/EL aufrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-20 11:20:02488Durchsuche

How can I invoke static methods in JSP/EL?

Aufrufen statischer Methoden in JSP/EL

In JSP müssen Sie häufig Berechnungen durchführen oder auf statische Methoden aus Java-Klassen zugreifen. Das Aufrufen statischer Methoden direkt in Expression Language (EL) wird jedoch nicht unterstützt.

Szenario:

Sie haben eine Tabelle mit einem „Balance“-Attribut und möchten eine Berechnung durchführen einen neuen Wert namens „amount“ mithilfe einer statischen Methode in der Klasse „Calculate“. In JSTL-Tags eingebettete Scriptlets, wie Sie es versucht haben, werden nicht empfohlen.

EL-Einschränkung:

EL kann Instanzmethoden nur für Klassen aufrufen, die Sie als JavaBeans erstellt haben . Auf statische Methoden, die nicht Teil einer Instanz sind, kann nicht direkt über EL zugegriffen werden.

Lösungen:

  1. Eine Instanz erstellen Methode:

    • Erstellen Sie eine Methode innerhalb der Bean, die die statische Methode umschließt und übergibt Geben Sie die erforderlichen Parameter ein.
    • Verwenden Sie die Instanzmethode in EL anstelle der statischen Methode.
  2. Registrieren Sie eine benutzerdefinierte EL-Funktion:

    • Erstellen Sie eine Tag Library Descriptor (TLD)-Datei, die eine benutzerdefinierte EL deklariert Funktion.
    • Konfigurieren Sie die TLD-Datei auf Ihrer JSP-Seite mit der Funktion <%@taglib...%> Direktive.
    • Verwenden Sie die benutzerdefinierte EL-Funktion, die intern die statische Methode aufruft, innerhalb Ihres EL-Ausdrucks.

Beispiel mit Instanzmethode:

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>

Beispiel mit benutzerdefiniertem EL Funktion:

<!-- 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 -->

Das obige ist der detaillierte Inhalt vonWie kann ich statische Methoden in JSP/EL aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn