thymeleaf와 함께 data- * 속성 사용


125

thymeleaf로 data- * 속성을 설정할 수 있습니까?

thymeleaf 문서에서 이해했듯이 시도했습니다.

<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->

<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->

7
이것은 Thymeleaf 3.0 에서 수정 된 버그였습니다 . 이 질문은 3.0 이전 버전에만 해당됩니다. 새로운 것들은 th:data-el_id작동합니다.
GabiM

답변:


219

예, th:attr구조 Thymeleaf 문서-설정 속성 값 .

시나리오의 경우 다음 작업을 수행해야합니다.

<div th:attr="data-el_id=${element.getId()}">

XML 규칙을 사용하면 태그에 속성을 두 번 설정할 수 없으므로 th:attr동일한 요소에 둘 이상의 속성을 가질 수 없습니다 .

참고 : 하나 이상의 속성을 원하는 경우 다른 속성을 쉼표로 구분하십시오.

<div th:attr="data-id=${element.getId()},data-name=${element.getN‌​ame()}"> 

54
미래의 독자를위한 참고 사항입니다. 동일한 요소에 하나 이상의 th : attr을 포함 할 수 없으므로 하나를 사용하고 다른 속성을 쉼표로 구분하십시오.th:attr="data-id=${element.getId()},data-name=${element.getName()}"
AntonioOtero 2014-08-14

5
문자열의 일부로 변수를 포함해야하는 경우 다음을 수행해야합니다.th:attr="data-id='some-text'+${element.getId()}+'some-other-text',data-name=${element.getName()}"
kabadisha

1
@AntonioOtero의 의견이 답변의 일부 여야합니다.
Don Cheadle

속성 처리가 특정 속성에 국한되지 않고 일반적으로 처리되기를 바랍니다. 기능이 될 것이라고 들어 본 사람이 있습니까? (날 잘 비난, 내가 ;-) 아직 버전 3을 확인하지 않았다
더크 슈마허에게


7

Thymeleaf 3.0 거기입니다 기본 속성 프로세서 사용자 지정 특성의 모든 종류에 사용할 수 있습니다, 예를 들어이 th:data-el_id=""되고 data-el_id="", th:ng-app=""이된다 ng-app=""등등. 더 이상 사랑하는 데이터 속성 방언이 필요하지 않습니다.

이 솔루션 은 다음 대신 json 을 값 으로 사용하려는 경우 선호합니다 .

th:attr="data-foobar='{&quot;foo&quot:'+${bar}+'}'"

다음을 사용할 수 있습니다 ( 리터럴 대체 와 함께 ) :

th:data-foobar='|{"foo":${bar}}|'

업데이트 : 당신이 마음에 들지 않으면 th네임 스페이스, 당신은 또한 사용할 수있는 HTML5에게 친화적 인 속성과 요소 이름 등이 data-th-data-foobar="".

관심이있는 사람은 여기에서 관련 템플릿 엔진 테스트를 찾을 수 있습니다. 기본 속성 프로세서 테스트

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.