AEM Sling Model如何获取Multifield的值

转载自:AEM - Fetching Multifield Values Using Sling Model


类型一

@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class Model {

    @Inject
    private List<SocialLinkModel> socialLinks;

    public List<SocialLinkModel> getSocialLinks() {
        return new ArrayList<>(socialLinks);
    }

}

//另一个类
@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class SocialLinkModel {

    
    @ValueMapValue
    private String socialMedia;

    @ValueMapValue
    private String socialMediaLink;

    public String getSocialMedia() {
        return socialMedia;
    }

    public String getSocialMediaLink() {
        return socialMediaLink;
    }

}

类型二

不同于上一面,这个是拿Resource而不是List
其实上面的List也是可以通过Resource拿到一个一个值再拼成List的,就是会麻烦点

      @Inject
      @Optional
      public Resource multiful;

注意:
field必须有个属性为name,而且name必须为./multiful(也就是field上一级的结点名字),否则这里的Resource拿不到

Resource传到HTL遍历会简单些:

(Model的use为footer)直接用listChildren就可以直接取值了
HTL:
        <div data-sly-list.mul="${footer.multiful.listChildren}">
            <a href="${mul.link}"><img src="${mul.social}" /></a>
        </div>
posted @ 2021-01-21 15:59  lwxx  阅读(255)  评论(0)    收藏  举报