22.08.19
변수 - SpringEL
변수 표현식 : ${...}
SpringEL
스프링이 제공하는 표현식. 타임리프는 스프링이 객체에 접근하는 방식을 그대로 사용한다.
기본적으로 프로퍼티 접근 (getter/setter 필요)
Object
user.username : user의 username을 프로퍼티 접근
user.getUsername() user['username'] : 위와 같음
user.getUsername() user.getUsername() : user의 getUsername() 을 직접 호출
List
users[0].username : List에서 첫 번째 회원을 찾고 username 프로퍼티 접근
list.get(0).getUsername() users[0]['username'] : 위와 같음
users[0].getUsername() : List에서 첫 번째 회원을 찾고 메서드 직접 호출
Map
userMap['userA'].username : Map에서 userA를 찾고, username 프로퍼티 접근
map.get("userA").getUsername() userMap['userA']['username'] : 위와 같음
userMap['userA'].getUsername() : Map에서 userA를 찾고 메서드 직접 호출
지역 변수 선언
th:with 를 사용하면 지역 변수를 선언해서 사용할 수 있다. 지역 변수는 선언한 테그 안에서만 사용할 수 있다.
<h1>지역 변수 - (th:with)</h1>
<div th:with="first=${users[0]}">
<p>처음 사람의 이름은 <span th:text="${first.username}"></span></p>
</div>
<div>에서 선언 -> </div> 까지 사용 가능
기본 객체들
타임리프는 기본 객체들을 제공한다.
물론 컨트롤러에서 객체들을 생성해서 모델로 넘겨도 되지만 자주 사용하는 객체이기 때문에 타임리프 자체 제공
${#request}
${#response}
${#session}
${#servletContext}
${#locale}
#request 는 HttpServletRequest 객체가 그대로 제공되기 때문에 데이터를 조회하려면 request.getParameter("data") 처럼 불편하게 접근해야 한다.
이런 점을 해결하기 위한 편의 객체
HTTP 요청 파라미터 접근: param
예) ${param.paramData}
HTTP 세션 접근: session
예) ${session.sessionData}
스프링 빈 접근: @빈 이름
예) ${@helloBean.hello('Spring!')}