복붙노트

[SPRING] Thymeleaf / Spring MVC - Link 표현식에서 변수 / 표현식을 중첩하는 방법은 무엇입니까?

SPRING

Thymeleaf / Spring MVC - Link 표현식에서 변수 / 표현식을 중첩하는 방법은 무엇입니까?

예를 들어, Spring의 my controller 메소드는 다음과 같은 작업을 수행합니다.

model.addAttribute("view_name", "foobar")

그리고 Thymeleaf 템플릿에서이 작업을 수행하려고합니다.

<link th:href="@{/resources/libs/css/${view_name}.css}" rel="stylesheet" />

그러나 렌더링 된 결과는 다음과 같습니다.

<link href="/app/resources/libs/css/${view_name}.css" rel="stylesheet" />

그래서 내가 기대하는 $ {view_name}을 대체하지 않습니다.

내가 뭘 잘못하고 있죠? 일반적으로 Thymeleaf에서는 어떻게 표현을 중첩합니까?

해결법

  1. ==============================

    1.표현식 (예 : $ {...}, # {...}, | ... |, __...__, 'quoted string'...)으로 URL 재 작성을 시작하지 않으므로, Thymeleaf 전체 표현식을 String으로 간주하고 내부 표현식을 실행하지 않습니다.

    표현식 (예 : $ {...}, # {...}, | ... |, __...__, 'quoted string'...)으로 URL 재 작성을 시작하지 않으므로, Thymeleaf 전체 표현식을 String으로 간주하고 내부 표현식을 실행하지 않습니다.

    다음 예제는 표현식으로 시작하기 때문에 작동합니다.

    @{${attribute}}
    

    예를 들어 다음과 같은 가능성이 있습니다.

    리터럴 대체 (기본 메소드)

    파이프 라인 구문 (|)을 사용하여 문자열에서 리터럴 대체를 수행 할 수 있습니다.

    <link th:href="@{|/resources/libs/css/${view_name}.css|}" rel="stylesheet" />
    

    문자열 연결

    <link th:href="@{'/resources/libs/css/' + ${view_name} + '.css'}" rel="stylesheet" />
    
  2. from https://stackoverflow.com/questions/22059314/thymeleaf-spring-mvc-how-do-you-nest-variables-expressions-in-a-link-expressio by cc-by-sa and MIT license