라벨이 JSTL인 게시물 표시

[JSP] JSTL contains 만들어 사용하기

  해당 코드가 필요한 상황 JSTL을 사용하여 리스트 안에 해당 원소가 들어있는지 비교가 필요할 때  JSTL 에서 제공하는 functions 안에 indexOf 함수가 있다. 이 indexOf 는 단순히 비교대상인 문자열이 있다면 시작 index 를 반환한다. 그리하여 이 indexOf 를 사용할 때는 fn:indexOf(A, B) > -1 과 비슷한 형태로 사용한다.   indexOf 를 주의해서 사용해야하는 것은 단순 문자열 비교라는 것이다.  아래 경우에서의 indexOf 는 문제없이 돌아갈 것이다. A : "1,2,3" B: "1" 하지만 이 경우를 생각해보자. 아래의 경우는 A의 원소 안에 B 의 원소가 들어있지 않지만 indexOf 를 사용하게 된다면 123 의 시작 index 를 반환하게 될 것이다. 그리하여 이러한 것보다 더 명확한 contains 를 구현하려한다. A: "1,15,123" B: "12" 필자의 상황은 A 의 원소가 B 의 원소 안에도 있는 것이라면 다른 액션을 취해줘야하는 상황이다. A : "1,2,3,4,5,6,7,8" B : "1,4,8" 일단 이 문제를 해결하기 위해서는 A, B 문자열을 ',' 를 구분하여 List 로 변환해야한다. 이 코드는 아래와 같다. <c:forEach var="item" items="${fn:split(A, ',')}"> 위의 forEach 문 안에서 B 의 원소가 있는지를 봐야한다. 안타깝게도 jstl 의 functions 에서는 List contains 를 제공하지 않는다. 그리하여 아래 코드와 같이 직접 contains 를 구현해야한다.  참고 <c:forEach var="A_ELEMENT" items="${fn:split(A, ',')}" varS...