Maison >Java >javaDidacticiel >Comment appeler des méthodes statiques dans JSP/EL ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-16 04:23:02198parcourir

How to Invoke Static Methods in JSP/EL?

Appel de méthodes statiques en JSP/EL

En JSP, les méthodes statiques ne peuvent pas être invoquées directement dans les expressions EL. EL est conçu pour invoquer uniquement des méthodes d'instance.

Considérez le scénario suivant : une page JSP récupère une valeur de "solde" à partir d'une base de données et doit calculer une valeur de "montant" en fonction de celle-ci. L'utilisation de scriptlets pour insérer du code Java dans les balises JSTL n'est pas recommandée, car les scriptlets doivent être évités au profit d'EL.

Options de solution

Il existe deux solutions principales à ce problème. problème :

1. Encapsuler la méthode statique dans une méthode d'instance

Créez une méthode getter dans votre bean Java qui encapsule la méthode statique et renvoie la valeur calculée. Par exemple :

public class MyBean {
    private double balance;
    
    public double getAmount() {
        return Calculate.getAmount(balance);
    }
    
    // Other getters and setters...
}

Ensuite, dans votre page JSP, utilisez la méthode d'instance :

<c:forEach var="row" items="${rs.rows}">
    Amount: ${row.amount}
</c:forEach>

2. Déclarer la méthode statique en tant que fonction EL

Créez un fichier function.tld pour définir la méthode statique en tant que fonction EL. Par exemple :

<taglib>
  <uri>http://example.com/functions</uri>
  <function>
    <name>calculateAmount</name>
    <function-class>com.example.Calculate</function-class>
    <function-signature>double getAmount(double)</function-signature>
  </function>
</taglib>

Dans votre page JSP, utilisez la fonction EL :

<%@taglib uri="http://example.com/functions" prefix="f" %>
...
Amount: ${f:calculateAmount(row.balance)}

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!

Déclaration:
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