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!