JSTL function 문법

  • jsp 파일 머리부분에 다음과 같은 페이지 지시자를 써준다.
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  • 태그 라이브러리를 꼭! 불러와야지 쓸 수 있다. 만약 라이브러리 설정 안 했다면 JSTL 기본설정편으로 가서 보면서 세팅하시길
  • 서버에서 jsp로 데이터를 보내는 방법은 서버에서 JSP로 데이터 전송에 적었다. 혹시 이해 못하신 분들은 가서 보시길…

JSTL FUNCTION - 문자열 관련 함수

컨트롤러 java

@Controller
public class JSTLController {
    @RequestMapping("/jstlfunc")
    public String jstlfunc(Model model) {
        String str = "Hi, It's sunny day!";

        model.addAttribute("str",str);
        return "jstlfunc";
    }
}

jsp파일

<p>원본 데이터 : ${str}</p>
<p>substring : ${fn:substring(str,2,5) }</p><!--2번째 부터 5번째 글자 가져옴-->
<p>toUpperCase : ${fn:toUpperCase(str) }</p>
<p>toLowerCase : ${fn:toLowerCase(str) }</p>
<p>length : ${fn:length(str) }</p>
<p>contains : ${fn:contains(str,'abc')}</p>
<p>
    <c:set var = "ar" value="${fn:split(str,' ') }"/>
    <c:forEach var = "i" items="${ar }">
        ${i}<br>
    </c:forEach>
</p>

결과

1119sp4-1

JSTL FUNCTION - 옵션 관련 기능

  • 다음과 같은 형태의 input 이 있다. 여기에서 페이지가 로드됨과 동시에

    1. 검색에는 내용이 아닌 제목이라는 옵션이 보이고
    2. 성별은 default로 여성에 체크되어있고
    3. 취미는 독서와 TV시청에 체크되어 있게 하고 싶다.

    어떻게 할까?

  • select 태그 안 옵션 태그에 selected라는 키워드를 줬고,

  • radio나 checkbox타입의 인풋에서는 checked라는 키워드를 통해 체크가 되있게 했다.

  • 함수를 사용해서 서버에서 받은 변수가 html 요소의 값과 같으면 check나 select가 되게하면 된다.

1119sp4-2

컨트롤러 java

  • 일단 controller에서 내가 주고싶은 value을 저장한다.
@Controller
public class JSTLController {
    @RequestMapping("/jstlfunc")
    public String jstlfunc(Model model) {
       //주고 싶은 값들을 변수에 저장
        String searchItem ="title";
        String gender = "woman";
        String hobby = "reading watchingTv";

        //변수를 서버에 저장한다.
        model.addAttribute("hobby",hobby);
        model.addAttribute("gender",gender);
        model.addAttribute("searchItem",searchItem);
        return "jstlfunc";
    }
}

jsp파일

  • ${조건? ‘조건이 참일때’ : ‘조건이 거짓일때 ‘}

  • ${searchItem==’title’ ? ‘selected’ : ‘ ‘}

  • checkbox는 여러개 있을 수 있다. 그러므로 ==비교는 불가능하고, contains 키워드를 이용해서

    ${ fn:contains(hobby,'fishing')? 'checked':' '}
    

    이렇게 사용해야한다.

검색:
<select name ="searchItem">
    <option value = "title" ${searchItem=='title' ? 'selected' : ' '} >제목</option>
    <option value = "writer"  ${searchItem=='writer' ? 'selected' : ' '}>글쓴이</option>
    <option value = "content"  ${searchItem=='content' ? 'selected' : ' '}>내용</option>
</select>
<br>
성별 :
<input type = "radio" name ="gender" value = "man" ${gender=='man' ? 'checked':' '}> 남성
<input type = "radio"  name ="gender" value = "woman" ${gender=="woman" ? 'checked':' ' }> 여성
<br><br>
취미 :
<input type = "checkbox" name ="hobby" value = "reading" ${ fn:contains(hobby,'reading')? 'checked':' '}>독서
<input type = "checkbox" name ="hobby" value = "fishing" ${ fn:contains(hobby,'fishing')? 'checked':' '}>낚시
<input type = "checkbox" name ="hobby" value = "hiking" ${ fn:contains(hobby,'hiking')? 'checked':' '}>등산
<input type = "checkbox" name ="hobby" value = "riding" ${ fn:contains(hobby,'riding')? 'checked':' '}>라이딩
<input type = "checkbox" name ="hobby" value = "watchingTv" ${ fn:contains(hobby,'watchingTv')? 'checked':' '}>TV 시청

결과

1119sp4-3


© 2018. All rights reserved.

Powered by Hydejack v8.5.2