0

我是 AEM 新手,考虑我的 js 会返回 itemList(例如:var itemList = list.getItems();)。每个项目的骨架将是:

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();
            }

如何获取基于语言环境的标题(即调用getTitle(locale))来代替${list.title}下面 HTML 代码中提到的select标签(我需要 itemlist 中的 title(locale) 和 value): op​​tion value="${list.value}"> ${list.title}

4

1 回答 1

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 Use-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() {
        ...
    }
}
于 2015-09-07T16:28:08.673 回答