Expand my Community achievements bar.

SOLVED

condition compare in sightly

Avatar

Level 4

Dear All,

 

I have one dialog , where I have defined skuid , installation label and installation link , as shown below.

 

dipu2_0-1596037382778.png

 

Now , my requirement is that if Sku ID is blank ("null") then it will display the installation document link in sightly

 

if Sku ID is not blank ("not null") then it will display the Sku ID link in sightly.

 

For above , I have written below in the sightly. But it is not working fine , as shown below.

 

**************SIGHTLY CODE **********************

<div class="installation-documents" data-sly-use.installationdocuments="com.sunita.core.components.models.InstallationDocumentModel">

<h2 class="installation_header">${installationdocuments.header}</h2>

<div>${installationdocuments.description @CONTEXT = 'html'}</div>

<!-- <div><h3>${installationdocuments.skuid}</h3></div> -->


<sly data-sly-test="${installationdocuments.skuid == '' || installationdocuments.skuid == null}">
<h2> Sku-ID null</h2>
<ul>
<a class="new-tab" href="http://localhost:4502/assetdetails.html${installationdocuments.installationLink}" target="_blank">
${installationdocuments.installationLabel}
</a>
</ul>
</sly>

<sly data-sly-test="${installationdocuments.skuid != '' || installationdocuments.skuid != null}">
<h2> Sku-ID not null</h2>
<ul>
<a class="new-tab" href="http://localhost:4502/assetdetails.html/content/dam/referencesite/bathroomproducts/${installationdocuments.skuid}.pdf" target="_blank">
${installationdocuments.installationLabel}
</a>
</ul>
</sly>
</div>

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @dipu2 

 

Try below:

 

<sly data-sly-test.skuid="${installationdocuments.skuid}">
<h2> Sku-ID not null</h2>
<ul>
<a class="new-tab" href="http://localhost:4502/assetdetails.html/content/dam/referencesite/bathroomproducts/${installationdocuments.skuid}.pdf" target="_blank">
${installationdocuments.installationLabel}
</a>
</ul>
</sly>

<sly data-sly-test="${!skuid}">
<h2> Sku-ID null</h2>
<ul>
<a class="new-tab" href="http://localhost:4502/assetdetails.html${installationdocuments.installationLink}" target="_blank">
${installationdocuments.installationLabel}
</a>
</ul>
</sly>

 

In above changes, I am checking sku id not null first and variable in expression in data-sly-test take both null as empty as false. So, there is no need to check empty and null seperately.

 

Hope it helps!

Thanks!

Nupur

View solution in original post

6 Replies

Avatar

Level 4

dipu2_0-1596038176694.png

Adding to above , in my sightly output both null and not null is coming , as shown above.

Avatar

Correct answer by
Community Advisor

Hi @dipu2 

 

Try below:

 

<sly data-sly-test.skuid="${installationdocuments.skuid}">
<h2> Sku-ID not null</h2>
<ul>
<a class="new-tab" href="http://localhost:4502/assetdetails.html/content/dam/referencesite/bathroomproducts/${installationdocuments.skuid}.pdf" target="_blank">
${installationdocuments.installationLabel}
</a>
</ul>
</sly>

<sly data-sly-test="${!skuid}">
<h2> Sku-ID null</h2>
<ul>
<a class="new-tab" href="http://localhost:4502/assetdetails.html${installationdocuments.installationLink}" target="_blank">
${installationdocuments.installationLabel}
</a>
</ul>
</sly>

 

In above changes, I am checking sku id not null first and variable in expression in data-sly-test take both null as empty as false. So, there is no need to check empty and null seperately.

 

Hope it helps!

Thanks!

Nupur

Avatar

Community Advisor

Adding on to @Nupur_Jain,

Can you please provide the Sling Model implementation. You might have written you Sling Model improperly. 

Avatar

Level 4

HI Brian,

 

I do not think there is any issue in my slingmodel , as it is very much blank.

 

Below is my slingmodel.

 

protected static final Logger LOGGER = LoggerFactory.getLogger(InstallationDocumentImpl.class);

private Session session;

@reference
private QueryBuilder builder;

// Inject a Sling ResourceResolverFactory
@reference
private ResourceResolverFactory resolverFactory;

@ValueMapValue
@Via("resource")
private String header;

@ValueMapValue
@Via("resource")
private String description;


@ValueMapValue
@Via("resource")
private String skuid;

@ValueMapValue
@Via("resource")
private String installationLabel;

@ValueMapValue
@Via("resource")
private String installationLink;

@ScriptVariable
private Page currentPage;

// Inject the installationdocmtlink node under the current node

/*
* @inject
*
* @Deleted Account public Resource installationdocmtlink;
*/

public static String getResourceType() {
return RESOURCE_TYPE;
}

@Override
public String getExportedType() {
return RESOURCE_TYPE;
}

@Override
public String getHeader() {
// LOGGER.info("Before return header *******" + header);
return header;
}

@Override
public String getDescription() {
// LOGGER.info("Before return description *******" + description);
return description;
}


@Override
public String getSkuid() {
LOGGER.info("Before return skuid *******" + skuid);
return skuid;
}

@Override
public String getInstallationLabel() {
LOGGER.info("Before return installationLabel *******" + installationLabel);
return installationLabel;
}

@PostConstruct
private void initModel() throws Exception {
LOGGER.info("after return installationLink *******" + installationLink);

}

@Override
public String getInstallationLink() {
LOGGER.info("Before return installationLink *******" + installationLink);
return installationLink;
}

}

Avatar

Level 4

Thanks Nupur .

It is working now.

I have one small question here. 

Currently I have hard coded the href , as shown below

<a class="new-tab" href="http://localhost:4502/assetdetails.html/content/dam/referencesite/bathroomproducts/${installationdocuments.skuid}.pdf" target="_blank">

 

Is there any way to not hard coded ??http://localhost:4502/assetdetails.html/content/dam/referencesite/bathroomproducts and show the url 

 

Also when I am trying to use below in my HTML by using the path link , 

 

<a class="new-tab" href="${installationdocuments.installationLink @CONTEXT = 'uri'}" target="_blank">
${installationdocuments.installationLabel}

 

My PDF file is downloading , but not opening as URL...in new tab.

 

My cq dialog is like above .

 

Avatar

Level 4

My cq:dialog for pathlink is as below.

 

dipu2_0-1596074893930.png