The new way to annotate servlets is like this:
@component(service = { Servlet.class })
@SlingServletResourceTypes(
resourceTypes="/apps/my/type",
methods= "GET",
extensions="html",
selectors="hello")
public class MyServlet extends SlingSafeMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
...
}
}
How can one register by path, not by resource type?
The documenation:
https://sling.apache.org/documentation/the-sling-engine/servlets.html
Has no info on this,it mentions "sling.servlet.paths" but his is the old way, not the new way?
Solved! Go to Solution.
Views
Replies
Total Likes
Ok, found the solution:
@SlingServletPaths(value="/bin/somepath")
private class MyServlet extends SlingAllMethodsServlet
Hi,
You can use below syntax for registering the servlet with paths
@Component(service = Servlet.class,
property = {
Constants.SERVICE_DESCRIPTION + "=Some Description",
"sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.paths=" + "/bin/somepath",
"sling.servlet.extensions=json"
})
You can use the resourceType also to bind the servlet to a path
@component(service = Servlet.class, property = { Constants.SERVICE_DESCRIPTION + "=Some Description",
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.resourceTypes=apps/servlets/sometext" })
Create a node under content folder and add the resourceType as given in the servlet and hitting the page url will trigger the servlet.
Url to trigger the servlet: http://localhost:4502/content/wknd-events/servlet_nodes/servlets/newservlet
Hope this helps
Ok, found the solution:
@SlingServletPaths(value="/bin/somepath")
private class MyServlet extends SlingAllMethodsServlet
Views
Likes
Replies
Views
Likes
Replies