2给出吊索模型,我想注射其中之一。通过注释可以这样做吗?还是我需要创建一个PostContruct方法作为解决办法?
示例:
模型A
@Model(adaptables = Resource.class)
public class ModelA {
@ValueMapValue(name = "jcr:title", injectionStrategy = InjectionStrategy.OPTIONAL)
private String title;
@Inject // Not working!
private ModelB modelB;
}B型
@Model(adaptables = Resource.class)
public class ModelB {
@ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL)
private String text;
}发布于 2016-09-23 09:39:41
从1.1.0版本的Sling模型开始,您可以使用@Self注释来注入模型,这些模型可以根据当前的适应性进行调整。在本例中,来自Resource of ModelA。
注入适应性对象本身(如果字段的类匹配或是超级类型)。如果存在@Self注释,则尝试使其适应字段类型。
@Model(adaptables = Resource.class)
public class ModelA {
@ValueMapValue(name = "jcr:title", injectionStrategy = InjectionStrategy.OPTIONAL)
private String title;
@Inject // This should works
@Self
private ModelB modelB;
}发布于 2016-09-20 14:13:20
您将无法将ModelB注入到ModelA中,您可以做的是获取ModelA中的资源实例并使其适应ModelB。
@Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class ModelA {
@Inject
@Via("resource")
@Named("jcr:title")
private String title;
@Inject
private Resource resource;
@PostConstruct
public void init() {
final ModelB modelb = resource.adaptTo(ModelB.class);
}
}https://stackoverflow.com/questions/39594183
复制相似问题