


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?
Views
Replies
Sign in to like this content
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