繁体   English   中英

如何将Sling serlvet中的sling.servlet.resourceTypes设置为相对于自身的路径(对于serlvet的资源)?

[英]How to set sling.servlet.resourceTypes in a Sling serlvet to a path relative to itself (to serlvet's resource)?

如果我以错误的方式提出问题,我会首先说出我想要实现的目标:

我在CQ5中有以下组件结构:/ apps / TEST / components / DatabaseConnection(DatabaseConnection是组件名称)/ apps / TEST / components / DatabaseConnection / src / ServletDatabaseConnection(这是我用来处理来自TEST的POST请求的serlvet /组件/的DatabaseConnection。

在我的servlet中,sling.servlet.resourceTypes设置为TEST / components / DatabaseConnection)

所以,我已经设置了sling.servlet.resourceTypes的相对路径,serlvet将在/ apps / TEST / components / DatabaseConnection和/ libs / TEST / components / DatabaseConnection /下查找resourceType。

但我希望能够将我的组件DatabaseConnection移动到任何其他文件夹,而不是在servlet和应用程序中都不会更改任何内容。 但是如果我现在这样做,我将不得不将sling.servlet.resourceTypes更改为新的resourceType

考虑到,Sling中的所有内容都是资源,而我的servlet也是一种资源,对吧? 那么,可能有可能相对于servlet的resourceType设置sling.servlet.resourceTypes?

那么,我可以相对于这个servlet的资源类型设置sling.servlet.resourceTypes吗? 如果不是,是否还有其他方法可以使我的组件“可移动”,这样我就不必更改servlet中的任何内容了?

我发现这两个资源非常有用: http//www.pro-vision.de/content/medialib/pro-vision/production/adaptto/2012/adaptto2012-apache-sling-basic-concepts-rainer-bartl -peter-manne / _jcr_content / renditions / rendition.file / adaptto2012-apache-sling-basic-concepts-rainer-bartl-peter-mannel.pdf http://sling.apache.org/site/resources.html但我仍然无法想出解决方案

7个月过去了,我找到了如何在看到同事的代码后实现我想要实现的目标:)

所以我想让组件与它的servlet一起移动。

为此,我们不需要使用resourceType,但我们需要使用sling.servlet.paths。 http://sling.apache.org/documentation/the-sling-engine/servlets.html

为了使它工作,我们需要做三件事。

1)在我们要发送给Servlet的表单中,设置一些操作。 例:

<form name="name" id="id" action="/someaction/dothis" method="POST">
<button name="submit"> Submit </button>
</form>

2)在servlet中设置sling.servlet.paths。 在我们的情况下:

@Component(immediate = true)
@Service(value=javax.servlet.Servlet.class)
@Properties(value = {
@Property(name="sling.servlet.methods", value={ "POST" }),
//
@Property(name="sling.servlet.paths", value={"/someaction/dothis"})
})
public class ServletEvaluation extends SlingAllMethodsServlet {
...
}

3)在OSGi控制台/ system / console / configMgr中配置Apache Sling Servlet /资源解​​析器:将sling.servlet.path添加到执行路径。 在我们的例子中,设置/ someaction的执行路径

你尝试设置绝对路径而不是resourceType? 例如,如果将路径设置为/ bin / TEST / DatabaseConnection,那么资源类型是什么并不重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM