2015-09-07 82 views
0

我是AEM新手,考虑我的js会返回itemList(例如:var itemList = list.getItems();)。 每个项目的框架是:基于语言环境下的人口下降(轻微AEM)

interface Item { 

      /** 
       * Get the item's title. 
       * 
       * @return the title 
       */ 
       @Nonnull 
       String getTitle(); 

       /** 
       * Get the item's localized title. 
       * 
       * @param locale the locale for localization 
       * 
       * @return the title 
       */ 
       @Nonnull 
       String getTitle(Locale locale); 

       /** 
       * Get the item's value. 
       * 
       * @return the value 
       */ 
       @Nonnull 
       String getValue(); 
      } 

我怎样才能获得基于区域标题代替在select标签的HTML代码如下提到${list.title}(即调用getTitle(locale))(我需要这两个标题(区域)和值在项目列表中): option value =“$ {list.value}”> $ {list.title}

回答

0

从Sightly开始,您无法使用参数访问方法。

但是,在Use-API中,可以使用与Sightly执行上下文中相同的全局变量,并且还可以将参数传递给Use-API的初始化。

在Java代码中,你可以为实例访问的页面语言,这样的事情:

PageManager pageManager = request.getResourceResolver().adaptTo(PageManager.class); 
Page currentPage = pageManager.getContainingPage(request.getResource()); 
Locale locale = currentPage.getLanguage(false); 

否则,将参数传递给Java应用的API,这是怎么一回事呢:

<div data-sly-use.foo="${'Foo' @ locale='es'}"> 
    <h1>${foo.titleLocalized}</h1> 
</div> 

和相应的Java:

public class Foo extends WCMUsePojo { 
    private String locale; 

    @Override 
    public void activate() throws Exception { 
     String locale = get("locale", String.class); 
    } 

    public String titleLocalized() { 
     ... 
    } 
}