为了账号安全,请及时绑定邮箱和手机立即绑定

如何在JSP/EL中调用静态方法?

/ 猿问

如何在JSP/EL中调用静态方法?

慕虎7371278 2019-10-12 11:07:23

如何在JSP/EL中调用静态方法?

我对JSP很陌生。我试着连接MySQL和JSP页面,它运行得很好。但这是我需要做的。我有一个名为“Balance”的表属性。检索它,并使用它计算一个新的值,称为“金额”。(我不打印“余额”)。

 <c:forEach var="row" items="${rs.rows}">
        ID: ${row.id}<br/>
        Passwd: ${row.passwd}<br/>
        Amount: <%=Calculate.getAmount(${row.balance})%>
 </c:forEach>

似乎不可能在JSTL标记中插入scriptlet。



查看完整描述

3 回答

?
月关宝盒

不能在EL中直接调用静态方法。EL只调用实例方法。

至于你的失败脚本尝试,你不能混为一谈脚本还有艾尔。使用其中一种或另一种。自脚本气馁十多年来,你应该坚持只有厄尔尼诺的解决方案。

基本上有两个选项(假设这两个选项都有)。balanceCalculate#getAmount()double).

  1. 只需将其包装在实例方法中即可。

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

    然后用它代替:

    Amount: ${row.amount}

  2. 或者,声明Calculate#getAmount()作为EL函数。首先创建一个/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)}">



查看完整回答
反对 回复 2019-10-13
?
萧十郎

另一种方法是使用SpringSpel:

<%@taglib prefix="s" uri="http://www.springframework.org/tags" %><s:eval expression="T(org.company.Calculate).getAmount(row.balance)" var="rowBalance" />Amount: ${rowBalance}

如果您跳过可选的var="rowBalance"然后<s:eval>将打印要输出的表达式的结果。


查看完整回答
反对 回复 2019-10-13
?
潇湘沐

类bean的StaticInterface也可以使用

<h:commandButton value="reset settings" action="#{staticinterface.resetSettings}"/>

豆子

package com.example.common;import com.example.common.Settings;import javax.faces.bean.ManagedBean;import javax.faces.bean.ViewScoped;@ManagedBean(name = "staticinterface")@ViewScopedpublic class StaticInterface {

    public StaticInterface() {
    }

    public void resetSettings() {
        Settings.reset();
    }}



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信