JSTL function 문법
in Web Dev on Java Spring
- 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>
결과
JSTL FUNCTION - 옵션 관련 기능
다음과 같은 형태의 input 이 있다. 여기에서 페이지가 로드됨과 동시에
- 검색에는 내용이 아닌 제목이라는 옵션이 보이고
- 성별은 default로 여성에 체크되어있고
- 취미는 독서와 TV시청에 체크되어 있게 하고 싶다.
어떻게 할까?
select 태그 안 옵션 태그에 selected라는 키워드를 줬고,
radio나 checkbox타입의 인풋에서는 checked라는 키워드를 통해 체크가 되있게 했다.
함수를 사용해서 서버에서 받은 변수가 html 요소의 값과 같으면 check나 select가 되게하면 된다.
컨트롤러 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 시청
결과