Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

condition compare in sightly

dipu2
Level 3
Level 3

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
Nupur_Jain
Correct answer by
Community Advisor
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
dipu2
Level 3
Level 3

dipu2_0-1596038176694.png

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

Nupur_Jain
Correct answer by
Community Advisor
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

BrianKasingli
Community Advisor
Community Advisor

Adding on to @Nupur_Jain,

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

dipu2
Level 3
Level 3

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
*
* @Optional 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;
}

}

dipu2
Level 3
Level 3

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 .

 

dipu2
Level 3
Level 3

My cq:dialog for pathlink is as below.

 

dipu2_0-1596074893930.png