I have a Java Component , want to call that component in html using sightly. I am trying to use the tag data-sly-use.settings="com.pnc.xxx.Settings" .
It is initiating the new Instance, but not referring the existing component. How can I refer the existing component in sightly?
Views
Replies
Total Likes
When you say It is initiating the new Instance, are you referring to new java object?
Views
Replies
Total Likes
I have the same problem but i am trying to call the java class from the local folder.
-apps (folder)
-mywebsite (folder)
-components (folder)
-contentpage (cq:Component)
-partials (folder)
-navbar.html
-Menu.java
-navbar.js
This is my apps structure.
I am trying to call Menu.java from navbar.html but i can`t, when i am trying to call navbar.js is working correctly. What i am doing wrong ?
navbar.html (using navbar.js)
<nav class="navbar navbar-default" data-sly-use.navbar="../partials/navbar.js">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="#">${navbar.info.title}</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right" data-sly-list="${navbar.items}">
<li class="${item.page.active ? 'active' : ''}">
<a href="${item.page.vanityUrl}">${item.page.title}</a>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
navbar.html (using Menu.java)
<nav class="navbar navbar-default" data-sly-use.navbar="../partials/Menu">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="#">${navbar.lowerCaseTitle}</a>
</div>
</div><!-- /.container-fluid -->
</nav>
Menu.java
package apps.mywebsite.contentpage.partials;
import com.adobe.cq.sightly.WCMUse;
public class Menu extends WCMUse {
private String lowerCaseTitle;
@Override
public void activate() throws Exception {
lowerCaseTitle = "Hristo";
}
public String getLowerCaseTitle() {
return lowerCaseTitle;
}
}
navbar.js
use(function(){
var info = {},
items = [],
basePath = currentPage.getAbsoluteParent(2),
currentNavPath = currentPage.getAbsoluteParent(3).getPath(),
pages = basePath.listChildren(new Packages.com.day.cq.wcm.api.PageFilter());
info.title = currentPage.getAbsoluteParent(1).getTitle();
var resourceResolver = resource.getResourceResolver();
while (pages.hasNext()) {
var page = pages.next();
var active = (page.getPath() == currentNavPath);
items.push({
page: page,
active: active
});
};
return {
info: info,
items: items
};
});
Views
Replies
Total Likes
My Menu.java it`s not doing the same but i am just trying to access private String lowerCaseTitle; if everything is ok i will do the same logic in the java code.
Views
Replies
Total Likes
Hristo Gatev wrote...
I have the same problem but i am trying to call the java class from the local folder.
-apps (folder)
-mywebsite (folder)
-components (folder)
-contentpage (cq:Component)
-partials (folder)
-navbar.html
-Menu.java
-navbar.js
This is my apps structure.
I am trying to call Menu.java from navbar.html but i can`t, when i am trying to call navbar.js is working correctly. What i am doing wrong ?
navbar.html (using navbar.js)
<nav class="navbar navbar-default" data-sly-use.navbar="../partials/navbar.js">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="#">${navbar.info.title}</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right" data-sly-list="${navbar.items}">
<li class="${item.page.active ? 'active' : ''}">
<a href="${item.page.vanityUrl}">${item.page.title}</a>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
navbar.html (using Menu.java)
<nav class="navbar navbar-default" data-sly-use.navbar="../partials/Menu">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="#">${navbar.lowerCaseTitle}</a>
</div>
</div><!-- /.container-fluid -->
</nav>
Menu.java
package apps.mywebsite.contentpage.partials;
import com.adobe.cq.sightly.WCMUse;
public class Menu extends WCMUse {
private String lowerCaseTitle;
@Override
public void activate() throws Exception {
lowerCaseTitle = "Hristo";
}
public String getLowerCaseTitle() {
return lowerCaseTitle;
}
}
navbar.js
use(function(){
var info = {},
items = [],
basePath = currentPage.getAbsoluteParent(2),
currentNavPath = currentPage.getAbsoluteParent(3).getPath(),
pages = basePath.listChildren(new Packages.com.day.cq.wcm.api.PageFilter());
info.title = currentPage.getAbsoluteParent(1).getTitle();
var resourceResolver = resource.getResourceResolver();
while (pages.hasNext()) {
var page = pages.next();
var active = (page.getPath() == currentNavPath);
items.push({
page: page,
active: active
});
};
return {
info: info,
items: items
};
});
I can able to invoke java class using the sightly tag data-sly-use.settings="com.xxx.Settings" , Give a try and hope it works.
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies