Maison > Java > javaDidacticiel > le corps du texte

Comment puis-je appeler des méthodes statiques dans JSP/EL ?

Barbara Streisand
Libérer: 2024-11-20 11:20:02
original
501 Les gens l'ont consulté

How can I invoke static methods in JSP/EL?

Appel de méthodes statiques en JSP/EL

En JSP, vous devez souvent effectuer des calculs ou accéder à des méthodes statiques à partir de classes Java. Cependant, l'appel de méthodes statiques directement dans Expression Language (EL) n'est pas pris en charge.

Scénario :

Vous disposez d'une table avec un attribut « solde » et souhaitez calculer une nouvelle valeur appelée "montant" en utilisant une méthode statique dans la classe "Calculer". Les scriptlets intégrés dans les balises JSTL, comme vous l'avez essayé, ne sont pas recommandés.

Restriction EL :

EL ne peut invoquer que des méthodes d'instance sur des classes que vous avez créées en tant que JavaBeans. . Les méthodes statiques, qui ne font pas partie d'une instance, ne sont pas directement accessibles via EL.

Solutions :

  1. Créer une instance Méthode :

    • Créer une méthode dans le bean qui encapsule la méthode statique, en transmettant les paramètres nécessaires.
    • Utilisez la méthode d'instance dans EL au lieu de la méthode statique.
  2. Enregistrez une fonction EL personnalisée :

    • Créer un fichier de descripteur de bibliothèque de balises (TLD) qui déclare un EL personnalisé fonction.
    • Configurez le fichier TLD dans votre page JSP à l'aide de la fonction <%@taglib...%> directive.
    • Utilisez la fonction EL personnalisée, qui appelle en interne la méthode statique, dans votre expression EL.

Exemple avec la méthode d'instance :

public class Bean {

    private double balance;

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

    // ...other methods
}
Copier après la connexion
<c:forEach var="row" items="${rs.rows}">
    Amount: ${row.amount}  <!-- Invoke instance method -->
</c:forEach>
Copier après la connexion

Exemple avec EL personnalisé Fonction :

<!-- functions.tld -->
<taglib>
    ...
    <function>
        <name>calculateAmount</name>
        <function-class>com.example.Calculate</function-class>
        <function-signature>double getAmount(double)</function-signature>
    </function>
    ...
</taglib>
Copier après la connexion
<%@taglib uri="http://example.com/functions" prefix="f"%>
...
Amount: ${f:calculateAmount(row.balance)}  <!-- Invoke custom EL function -->
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal