Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.
SOLVED

Get video path

Avatar

Level 4

Hi,

I am trying to create a Video Component, that will look like Image component(just drag and drop the asset).

This is how I build the dialog:

<video
                                                jcr:primaryType="nt:unstructured"
                                                sling:resourceType="cq/gui/components/authoring/dialog/fileupload"
                                                autoStart="{Boolean}false"
                                                class="cq-droptarget"
                                                fieldLabel="Image asset"
                                                fileNameParameter="./fileName"
                                                fileReferenceParameter="./fileReference"
                                                mimeTypes="[video/quicktime]"
                                                multiple="{Boolean}false"
                                                name="./video"
                                                title="Upload Image Asset"
                                                uploadUrl="${suffix.path}"
                                                useHTML5="{Boolean}true"/>

But, I can not return the path from the java model.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

@AD-EngineerCan you try this:

Remove ValueMapValue annotation and add below method

@PostConstruct
protected void initModel() {
   video = componentResource.getValueMap().get("fileReference", String.class);
}

View solution in original post

11 Replies

Avatar

Community Advisor

Hi @AD-Engineer 

 

Can you try the dailog field as a path field rather than the fileupload?

 

Thanks,
Kiran Vedantam

Avatar

Community Advisor

Hi @AD-Engineer ,

           You need to used filereference in sling model to access the path of video.

 

Regards,

Sanjay

Avatar

Level 4

@Sanjay_Bangar yes but how?

this is my method:

 public String getVideo() {
        return video;
    }

It is not returning anything

Avatar

Community Advisor

Hi @AD-Engineer, could you please share part of code responsible for video variable initialization,. How video value is set in you sling model?

Avatar

Community Advisor

@AD-Engineer 

Ok, so assuming that video variable represents path to asset, I would suggest to do following change in your code

    @ValueMapValue(name = "fileReference")
    private String video;

Current behavior is correct because video is not representing any specific property in the repository it's defining node name.

Avatar

Level 4

@lukasz-m thanks!

Tried it, but still not working. It does not return anything.

Avatar

Community Advisor

@AD-Engineer Could you please share the entire sling model source code?

Avatar

Level 4

@lukasz-m 

@Model(
        adaptables = {SlingHttpServletRequest.class},
        adapters = {VideoComp.class},
        resourceType = {ResourceType.Constants.VIDEO_COMP},
        defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL
)

@Slf4j
public class VideoCompImpl implements VideoComp {

    @Inject
    Resource componentResource;
    
    @OSGiService
    private ModelFactory modelFactory;

    @Self
    private SlingHttpServletRequest request;

    @ValueMapValue(name = "fileReference") 
    private String video;


    @Override
    public boolean isEmpty() {
        return false;
    }


    @Override
    public String getVideo() {
        return video;
    }


    
}

Avatar

Correct answer by
Community Advisor

@AD-EngineerCan you try this:

Remove ValueMapValue annotation and add below method

@PostConstruct
protected void initModel() {
   video = componentResource.getValueMap().get("fileReference", String.class);
}