• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

타임 리프 객체 접근

24.04.23 10:24 작성 조회수 51

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
user.username 이 어떻게 가능한가요? private 이어서 user.getUsername() 해야하는 것 아닌가요? 아니면, 서버 사이드에서 user.username 을 user.getUsername으로 바꿔주나요?

답변 1

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.04.23

안녕하세요. 문상준님, 공식 서포터즈 OMG입니다.

타임리프가Getter() 뿐만 아니라 .필드 접근 방식도 지원한다고 이해하시면 될 것 같습니다 😀

감사합니다.

문상준님의 프로필

문상준

질문자

2024.04.23

필드가 private이어도 접근가능하면 안되는 것 아닌가요? 브라우저에서 소스보기하면, 특정 클래스의 변수이름을 알 수 있으니까 보안적으로 문제가 되지는 않나요?

OMG님의 프로필

OMG

2024.04.24

필드가 private이지만, 결국 호출하는 것은 public 메서드인 getter를 호출하여 문제가 되지 않습니다 😀

User 클래스를 아래와 같이 직접 getter를 생성하고, getter에는 출력문을 추가하신 후,


static class User {
    private String username;
    private int age;

    public User(String username, int age) {
        this.username = username;
        this.age = age;
    }

    public String getUsername() {
        System.out.println("username = " + username);
        return username;
    }

    public int getAge() {
        System.out.println("username = " + username);
        return age;
    }
}

강의 초반에서 다루었던 SpringEL 표현식의 다양한 객체 접근 방식에 대해 모두 getter가 호출되는 것을 확인해보실 수 있습니다 😀


<h1>SpringEL 표현식</h1>
<ul>Object
    <li>${user.username} =    <span th:text="${user.username}"></span></li>
    <li>${user['username']} = <span th:text="${user['username']}"></span></li>
    <li>${user.getUsername()} = <span th:text="${user.getUsername()}"></span></li>
</ul>