자주 보게되는 타입은 String 이고 이를 조작하는 법이 능숙할 수록 유리하다는 것을 많이 느낀다.
아파치제단에서 관리하는 JSTL 태그 라이브러리에는 내장된 static 메서드가 있어 이를 EL안에 사용할 수 있다.
일단 사용법은 ${메서드명(매개변수)} 인데 매개변수를 조심해야할게, 이게 Property 명이다.
<body>
<%
List<String> list = new ArrayList<>();
list.add("java");
list.add("sql");
request.setAttribute("myList", list);
%>
<%-- <%= MyUtil.length(list) %> --%>
<!-- 임포트한 뒤 EL에서도 그대로 호출하는데 매개변수가 Property명이다 -->
\${MyUtil.length(myList)} : ${MyUtil.length(myList)}
<hr />
${fn:length(myList) } <br />
</body>
내부적으로 Static메서드를 만들어 사용하기 위해서는 클래스에서 정의한 뒤 JSP에서 임포트해야한다고 한다.
${}안에 메서드 명으로 호출한다.
package chap11;
import java.util.Collection;
public class MyUtil {
public static int length(Object Object) {
Collection c = null;
if(Object instanceof Collection) {
c = (Collection)Object;
}else {
return -1;
}
return c.size();
}
}
JSP 페이지에 taglib에 추가한다. prefix 는 fn 이다.
tomcat사이트 -> taglibs -> implc, spec .jar 파일 다운로드 한 뒤 jar 파일을 classpath에 추가.
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Spring ragercy Mvc Project 나 Dynamic Web Project 에서는 jstl 의존이 등록되어 있으니 에러 없이 사용가능한거 였다.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
나중에 Maven Project 를 생성하게 될 때 참고하자.
Sevlet 규약에서는 webapp 안의 lib 가 모듈 저장소이지만, spring에서는 따로 저장하고 있어 lib폴더를 사용해보지는 않은 것 같다.
'EL' 카테고리의 다른 글
8.forEach태그의 Map 컬렉션 추출 (0) | 2020.07.15 |
---|---|
7.JSTL-forEach의 태그와 기본속성. (0) | 2020.07.15 |
5.EL에서의 논리연산자와 비교연산자 (0) | 2020.07.14 |
4.EL에서의 비교연산자 (0) | 2020.07.14 |
3.파라미터, 헤더, 쿠키, 전역 변수 (0) | 2020.07.14 |