您不能直接在 EL 中调用静态方法,EL 只会调用实例方法。
至于失败的脚本小工具尝试,您不能混合使用脚本小脚本和 EL。使用一个或另一个。由于十多年来不鼓励使用脚本,因此您应该坚持使用仅限EL的解决方案。
您基本上有 2 个选项(假设两者都是 )。balance
Calculate#getAmount()
double
-
只需将其包装在实例方法中即可。
public double getAmount() {
return Calculate.getAmount(balance);
}
并用它来代替:
Amount: ${row.amount}
-
或者,声明为 EL 函数。首先创建一个文件:Calculate#getAmount()
/WEB-INF/functions.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<display-name>Custom Functions</display-name>
<tlib-version>1.0</tlib-version>
<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>
并按如下方式使用它:
<%@taglib uri="http://example.com/functions" prefix="f" %>
...
Amount: ${f:calculateAmount(row.balance)}">