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>
知识离开了脑子,就只是一堆文字

浙公网安备 33010602011771号