3

私が間違った方法で質問した場合、私は最初に私が達成したいことを言います:

CQ5のコンポーネントの構造は次のとおりです。/apps/TEST/components/DatabaseConnection(DatabaseConnectionはコンポーネント名です)/ apps / TEST / components / DatabaseConnection / src / ServletDatabaseConnection(これはTESTからのPOSTリクエストを処理するための私のserlvetです/ components/DatabaseConnection。

私のサーブレットでは、sling.servlet.resourceTypesはTEST / components / DatabaseConnectionに設定されています)

したがって、sling.servlet.resourceTypesの相対パスを設定すると、サーブレットは/ apps / TEST / components/DatabaseConnectionおよび/libs/ TEST / components /DatabaseConnection/の下でresourceTypeを検索します。

ただし、コンポーネントのDatabaseConnectionを他のフォルダーに移動し、サーブレットでもアプリケーションでも何も変更しないようにしたいです。ただし、今それを行う場合は、sling.servlet.resourceTypesを新しいresourceTypeに変更する必要があります

私のサーブレットもリソースであるよりも、Slingのすべてがリソースであることを考慮に入れてください。それで、おそらくサーブレットのresourceTypeに対してsling.servlet.resourceTypesを相対的に設定することは可能でしょうか?

では、このサーブレットのリソースタイプに関連してsling.servlet.resourceTypesを設定できますか?いいえの場合、サーブレットで何も変更する必要がないように、コンポーネントを「移動可能」にする他の方法はありますか?

私はこの2つのリソースが非常に役立つことを発見しました: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 しかし、私はまだ解決策を思い付くことができません

4

2 に答える 2

1

7か月が経過し、同僚のコードを見て、達成しようとしていたことを達成する方法を見つけました:)

そこで、サーブレットと一緒にコンポーネントを動かせるようにしたかったのです。

これを行うには、resourceType を使用する必要はありませんが、sling.servlet.paths を使用する必要があります。 http://sling.apache.org/documentation/the-sling-engine/servlets.html

それを機能させるには、3 つのことを行う必要があります。

1) サーブレットに送信するフォームで、いくつかのアクションを設定します。例:

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

2) サーブレットで 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 に設定します

于 2013-09-02T15:41:53.227 に答える
0

resourceType の代わりに絶対パスを設定しようとしましたか? たとえば、パスを /bin/TEST/DatabaseConnection に設定した場合、リソースの種類は関係ありません。

于 2013-02-05T09:27:11.663 に答える