kinggora 2022. 8. 19. 21:22

변수 - 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!')}