• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

Spring EL 표현식 ${} 관련

24.02.06 15:30 작성 24.02.06 15:31 수정 조회수 111

0


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

[질문 내용]

일반적으로 ${}를 쓸 때는 중괄호 내에 지정된 필드에 "실제 값"을 호출하는 것으로 알고 있습니다

 

예를 들어 <span th:text="${item.itemName}"></span>의 경우 Item객체에 프로퍼티 접근을 통하여 itemName 필드에 들어있는 "실제 값"에 접근을 합니다

즉 itemName의 실제 값인 "itemA"를 반환하게 되는 것이지요

 

하지만

<form th:object="${item}">

<label for="itemName"></label>

<input type="text" th:field ="${item.itemName}">

</form>

와 같이 th:object=${item}으로 폼에서 item 객체를 지정해서 th:field=*{itemName} 하게 되면 이때는 "실제 값"을 꺼내는 게 아닌 itemName이라는 "변수 이름"을 꺼내서 id , name , value값으로 지정하게 됩니다

 

[핵심 질문]

이에 따라 일반적인 상황에선 Spring EL 문법인 ${}의 용도가 "실제 값"을 꺼내는 거지만 th:field같은 예외적인 상황에서만 "변수 이름"에 접근하는 것이라고 이해해도 될까요?

답변 2

·

답변을 작성해보세요.

2

OMG님의 프로필

OMG

2024.02.07

안녕하세요. 경민님, 공식 서포터즈 OMG입니다.

네, 이해하신 내용이 맞습니다.

타임리프에서는 다양한 표현식 @{}, ${} , #{}, *{}을 이용하여 객체 혹은 필드에 접근하는 등 정해진 표현식에 맞게 제공한다고 이해하시면 될 것 같습니다.

 

그 중 object와 field에 관해서는 잘 이해하신 것 같습니다.

 

감사합니다.

경민님의 프로필

경민

질문자

2024.02.08

감사합니다 ! 덕분에 제 논리에 확답을 내릴 수 있었습니다!

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.06

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용은 Spring Expression Language (SpEL)의 용법과 Thymeleaf에서의 th:field 속성에서 발생하는 행동에 대한 이해와 관련이 있습니다. 기존의 답변 자료들 중에서, 강의 수강생이 유사한 내용에 대해 질문한 사례가 있지만 th:field로 “실제 값” 대신 “변수 이름”이 어떻게 적용되는지에 관한 구체적 설명이 포함된 질문은 발견되지 않았습니다.

제가 찾은 답변들은 th:field 속성에 대한 이해를 돕기 위한 설명을 제공하지만, 경민님의 구체적인 상황과는 일부 다를 수 있으므로 정확한 조언을 드리기는 어렵습니다.

th:field에 따른 id와 name 값에 대한 이해
th:field 속성에서 *와 $의 차이점 설명
th:field와 th:errors의 관계 설명
th:field 속성에서 checkbox 처리 방식에 대한 설명

위 링크를 참고하여 th:field 속성과 Spring EL 표현식에 대해 추가적으로 학습할 수 있습니다.

${} 표현식은 일반적으로 변수나 표현식의 결과를 출력하기 위해 사용되며, th:field 와 같은 Thymeleaf 특정 속성 안에서는 특정 용도로 사용되기도 합니다. Thymeleaf에서 th:field는 주로 폼 바인딩을 위해 사용되며, *{}와 함께 사용되어 객체의 프로퍼티를 바인딩하는 데 사용됩니다. 예외적인 상황에서의 동작이라고 보기보다는 Thymeleaf의 특정 문맥에서 사용되는 구체적인 용법이 있고, 이를 이해하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.