> Java > java지도 시간 > JSP/EL에서 정적 메소드를 어떻게 호출할 수 있나요?

JSP/EL에서 정적 메소드를 어떻게 호출할 수 있나요?

Barbara Streisand
풀어 주다: 2024-11-20 11:20:02
원래의
555명이 탐색했습니다.

How can I invoke static methods in JSP/EL?

JSP/EL에서 정적 메서드 호출

JSP에서는 계산을 수행하거나 Java 클래스의 정적 메서드에 액세스해야 하는 경우가 많습니다. 그러나 EL(Expression Language)에서 정적 메서드를 직접 호출하는 것은 지원되지 않습니다.

시나리오:

"balance" 속성이 있는 테이블이 있고 계산하려고 합니다. "Calculate" 클래스의 정적 메서드를 사용하여 "amount"라는 새 값을 생성합니다. 시도한 것처럼 JSTL 태그에 포함된 스크립트릿은 권장되지 않습니다.

EL 제한:

EL은 JavaBeans로 생성한 클래스의 인스턴스 메서드만 호출할 수 있습니다. . 인스턴스의 일부가 아닌 정적 메서드는 EL을 통해 직접 액세스할 수 없습니다.

해결책:

  1. 인스턴스 생성 메서드:

    • 정적 메서드를 래핑하는 Bean 내에 메서드를 생성하고 필요한 매개변수를 전달합니다.
    • 정적 메서드 대신 EL의 인스턴스 메서드를 사용합니다.
  2. 사용자 정의 EL 함수 등록:

    • 사용자 정의 EL을 선언하는 TLD(태그 라이브러리 설명자) 파일을 만듭니다.
    • <%@taglib...%>를 사용하여 JSP 페이지에서 TLD 파일을 구성합니다. 지시문.
    • EL 표현식 내에서 내부적으로 정적 메소드를 호출하는 사용자 정의 EL 함수를 사용하십시오.

인스턴스 메소드의 예:

public class Bean {

    private double balance;

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

    // ...other methods
}
로그인 후 복사
<c:forEach var="row" items="${rs.rows}">
    Amount: ${row.amount}  <!-- Invoke instance method -->
</c:forEach>
로그인 후 복사

사용자 정의 EL 기능의 예:

<!-- functions.tld -->
<taglib>
    ...
    <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)}  <!-- Invoke custom EL function -->
로그인 후 복사

위 내용은 JSP/EL에서 정적 메소드를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿