Recent Posts
Recent Comments
05-28 11:56
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Today
Total
관리 메뉴

생각을 IT다

HTL 언어 정리 (4. 특수 HTML태그 / 사용 API) 본문

AEM(Adobe Experience Manager)

HTL 언어 정리 (4. 특수 HTML태그 / 사용 API)

흑백논리 2023. 2. 2. 10:29
반응형

이전 글 : https://thinking-it.tistory.com/31

 

HTL 언어 정리 (3. 블록문)

이전 글 : https://thinking-it.tistory.com/30 HTL 언어 정리 (2. 표현식 옵션) 이전 글 : https://thinking-it.tistory.com/29 HTL 언어 정리 (1. 표현 언어, 구문 및 의미론) 해당 글은 아래 출처에서 가져온 것으로 자세

thinking-it.tistory.com

 

해당 글은 아래 출처에서 가져온 것으로 자세한 것은 출처로 이동하여 봐주시길 바랍니다.

자료 출처 : https://github.com/adobe/htl-spec/blob/master/SPECIFICATION.md#121-display-context

해당 자료의 길이가 길어 분할하여 업로드하려고 합니다.

 

3. 특수 HTML 태그

3.1.<sly>

HTML 태그를 사용하여 현재 <sly>요소를 제거하여 하위 요소만 표시되도록 할 수 있습니다. 기능은 data-sly-unwrap블록 요소와 유사합니다.

<!--/* This will display only the output of the 'header' resource, without the wrapping <sly> tag */-->
<sly data-sly-resource="./header"></sly>

유효한 HTML 5 태그는 아니지만 다음을 data-sly-unwrap사용하여 <sly>태그를 최종 출력에 표시할 수 있습니다.

<sly data-sly-unwrap="${false}"></sly> <!--/* outputs: <sly></sly> */-->

 

4. 사용-API

HTL은 비즈니스 논리가 마크업과 혼합되지 않도록 하여 관심사 분리를 장려합니다. 그러나 비즈니스 로직은 Use-API를 통해 구현할 수 있습니다.

 

4.1. 자바 사용-API

Java Use-API는 를 통해 HTL 스크립트에서 사용할 data-sly-use 비즈니스 로직 객체를 로드하는 데 사용할 수 있습니다. Java Use-API 객체는 POJO의 기본 생성자를 통해 특정 구현에 의해 인스턴스화된 간단한 POJO일 수 있습니다.

Use-API POJO는 다음 서명과 함께 init이라는 공용 메서드를 노출할 수도 있습니다.

    /**
     * Initialises the Use bean.
     *
     * @param bindings All bindings available to the HTL scripts.
     **/ 
    public void init(javax.script.Bindings bindings);

bindings맵에는 Use-API 개체가 처리에 사용할 수 있는 현재 실행된 HTL 스크립트에 대한 컨텍스트를 제공하는 개체가 포함될 수 있습니다 .

 

4.2. JavaScript 사용-API

사용 개체는 다음 규칙을 사용하여 JavaScript로 정의할 수도 있습니다.

/**
 * In the following example '/libs/dep1.js' and 'dep2.js' are optional
 * dependencies needed for this script's execution. Dependencies can
 * be specified using an absolute path or a relative path to this
 * script's own path.
 *
 * If no dependencies are needed the dependencies array can be omitted.
 */
use(['dep1.js', 'dep2.js'], function (Dep1, Dep2) {
    // implement processing
    
    // define this Use object's behaviour
    return {
        propertyName: propertyValue
        functionName: function () {}
    }
});

 

4.3. 개체 해상도 및 해당 속성 또는 메서드

HTL 구현은 실행되는 플랫폼에 따라 Use-API에 대한 적절한 지원을 제공해야 합니다. 그러나 대상 개체에 대한 속성 또는 메서드 확인은 다음 규칙을 따라야 합니다.

  1. expression.identifier는 expression["identifier"] 과 expression['identifier']이 동등하다
  2. identifier해상도는 다음 알고리즘을 사용합니다 .
    1. identifier에 의해 반환된 개체의 공개적으로 액세스 가능한  expression필드로 해결하려고 시도 합니다. 찾으면 반환하십시오.
    2. identifier에 의해 반환된 개체의 형식 매개변수 없이 공개적으로 액세스할 수 있는  expression메서드로 해결하려고 시도 합니다.
      1. 이름이 identifier인 메서드를 찾으십시오. 찾으면 메서드를 호출하고 반환합니다.
      2. 호출된 getIdentifier getter를 찾으려고 시도합니다 ( camelCase 에 주목 ). 찾으면 메서드를 호출하고 반환합니다.
      3. isIdentifier 메서드를 찾으십시오 ( camelCase에 주목하십시오 ). 찾으면 메서드를 호출하고 반환합니다.
      4. null 반환
반응형
Comments