2016-12-01 6 views
0

이유 중 하나 내 other question 다음 사용 사례는 다음과 같습니다 내 TextModel 주입 된 속성으로 내 ImageModel를 사용하고 확장하는 TextImageModel 만들려면 :SlingModels : SlingHttpServletRequest에서 다른 모델을 주입

@Model(adaptables = {SlingHttpServletRequest.class}) 
public class TextImageModel extends TextModel { 

    @Inject 
    private ImageModel image; 
} 

을하지만 이것은 아무튼 일하지 마라. 그것은 should work 나는 적응력으로 Resource을 사용하는 것입니다,하지만 난뿐만 아니라 내 ImageModel에서 SlingHttpServletRequest 및 TextModel 필요합니다

@Model(adaptables = {SlingHttpServletRequest.class}) 
public class ImageModel { 
    @SlingObject 
    private SlingHttpServletRequest request; 

    @SlingObject 
    private Resource resource; 
} 

가 어떻게 적응 등의 요청을 사용하여 ImageModel를 주입 할 수 있습니까? https://sling.apache.org/documentation/bundles/models.html#via

아니에요 : 이미지 리소스는

답변

0

당신이 다음 적응력보다 특정 다른 유형에서 주입 할 경우 image 당신이 @Inject @Via("resource") 여기

더 사용할 수있는 이름을 가진 하위 자원이다 모델이 아닌 속성에서 작동하는지 여부는 확실합니다.

+0

은 내 ImageModel은 SlingHttpServletRequest를 통해 적용 할 수있는'ImageModel이 자원에서 적응 때 PostConstruct' – Thomas

+0

@ 비아는 neccesary 될 것이다. 그것이 그렇듯, @Self가 도움이됩니다. –

1

@Inject 대신 @Self를 사용할 수 있지만 ImageImageModel과 동일한 리소스가 ImageModel에 있습니다. 당신이 원하는대로 아이 "이미지"가 아닙니다. Afaik는 Request에서 적응할 때 항상 Request에서 자원을 읽습니다. 나는 그것을 필요로하는 내 편집을 참조하십시오

@Model(adaptables = {SlingHttpServletRequest.class}) 
public class TextImageModel extends TextModel { 

    @Self 
    private ImageModel image; 
} 
+0

ImageModel을 리소스에서 수정하려면 @Via ("요청")을 추가해야합니다. –