我很好奇是否有办法从OSGI Servlet中访问引荐来源资源。
示例:
任何想法/想法将不胜感激。
谢谢你, 布罗迪答案 0 :(得分:3)
您可以使用组件资源路径添加隐藏值:
<input type="hidden" name="resourcePath" value="${resource.path}"/>
值将作为servlet代码中的resourcePath
参数提供:
String resourcePath = request.getParameter("resourcePath");
您应该检查资源路径是否是有效值,因为恶意用户可以设置他们想要的任何内容。
另外,请考虑第二种方法:您可以将servlet绑定到组件resourceType ,而不是将servlet绑定到静态路径/bin/form
。我们假设此资源类型为myapp/component/form
。在这种情况下,您可以按如下方式声明servlet:
@SlingServlet(resourceTypes="myapp/component/form", methods="POST", selectors="form")
public FormServlet extends SlingAllMethodsServlet {
public doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) {
Resource formResource = request.getResource();
// ...
}
}
表单代码应如下所示:
<form action="${resource.path}.form.html" method="post">
<!-- your form contents here -->
</form>
这种方法的优点:
request.getResource()
,