Sling модель AEM - компонент ссылок мультиполя, MissingElementsException: не удалось внедрить все обязательные поля - PullRequest
0 голосов
/ 26 февраля 2019

Модель подвески AEM --Multifield Компонент ссылок:

MissingElementsException: Не удалось ввести все обязательные поля

Я пытаюсь создать ссылку multifield (URL) компонент - ВНЕШНИЕ И ВНУТРЕННИЕ ССЫЛКИ.См. getpageURL() для понимания.

См. Изображение ниже:

exception image

HTL and dailog

@Model(adaptables = Resource.class)
public class Links_Bean {

@Inject
private String pagePath;

@PostConstruct
protected void init() {
    pagePath = getPageURL(pagePath);
}

public static String getPageURL(String pagePath) {
    if (pagePath.isEmpty() || (pagePath.equals(null))) {
        return null;
    } else if (pagePath.startsWith("/content")) {

        return pagePath.concat(".html");
    } else if (pagePath.startsWith("http://") || pagePath.startsWith("https://") || pagePath.startsWith("www")) {
        return pagePath;
    }
    return pagePath;
}

public String getPagePath() {
    return pagePath;
}

public void setPagePath(String pagePath) {
    this.pagePath = pagePath;
}

}

package com.hcl.aem.core.models;


@Model(adaptables = Resource.class)
public class MF_newMethod {
@Inject
@Named("items")
public Resource pagePathMF;

public List<Links_Bean> links = new ArrayList<Links_Bean>();

@PostConstruct
protected void init() {
    if (pagePathMF != null) {
        links = getPageList(links, pagePathMF);
    }
}

public static List<Links_Bean> getPageList(List<Links_Bean> array, Resource resource) {
    if (resource != null) {

        Iterator<Resource> linkResource = resource.listChildren();
        while (linkResource.hasNext()) {
            Links_Bean lb = linkResource.next().adaptTo(Links_Bean.class);

            array.add(lb);

        }

    }
    return array;
}

public List<Links_Bean> getLinks() {
    return links;
}

}

enter code here

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019
      protected String init() {
    pagePath = getPageURL(pagePath);
    return pagePath;  //<--------------added this
   }

и @ опционально, что сказал Киран ....

0 голосов
/ 27 февраля 2019

Вам не хватает @ Опционально здесь:

...

@Inject
@Named("items")
@Optional                      //<--- THIS
public Resource pagePathMF;

...
0 голосов
/ 26 февраля 2019

Проверьте, можете ли вы получить значение pagePath, если это не является обязательным, используйте аннотацию @Optional.

Используйте ссылку ниже для ссылки

[https://sling.apache.org/documentation/bundles/models.html][1]

Спасибо, Киран

...