gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:20 28 4
gpt4 key购买 nike

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

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

在我的 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 的表单中,设置一些 Action 。示例:

<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/Resource Resolver:将 sling.servlet.path 添加到执行路径。在我们的例子中,将执行路径设置为/someaction

关于java - 如何将 Sling serlvet 中的 sling.servlet.resourceTypes 设置为相对于自身的路径(到 serlvet 的资源)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601292/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com