Alfresco:Web 脚本 url 映射在 Java 与 Java 脚本中编写时表现不同

Alfresco: Web scripts url mapping behaves differently when written in Java vs. Javascript

我在 Alfresco 中遇到了 Web 脚本及其 URL 模式和行为的问题,具体取决于 Web 脚本是用 Java 还是 JavaScript 编写的。由于我花了一些时间才弄明白,所以我想在这里分享一下。

Alfresco 论坛中的原创 post: https://forums.alfresco.com/forum/developer-discussions/web-scripts/webscripts-url-mapping-behaves-differently-when-written-java


我刚刚注意到有关网络脚本的一些行为。也许有人知道为什么会发生这种情况,或者它是否是 Alfresco 中的错误。

我有两个 (GET) 网络脚本:

Webscript A 的描述符中有以下 URL:

<url>/api/v1/folders/{path}</url>

Webscript B 的描述符中有以下 URL:

<url>/api/v1/folders/{path}/files</url>

请注意,这些网址仅在最后的“/files”处有所不同。

现在奇怪的是,当两个网络脚本都写在javascript中时(因此也不需要在任何xml上下文文件中注册),无法到达网络脚本B,因为 A 已经错误地捕获了请求(我假设是因为 URL 模式重叠,但没有检查更匹配的其他模式)。 例如,我称 URL 为:

GET /api/v1/folders/myFolderX/files

我希望请求会转到 webscript B(由于末尾的“/files”),但它会转到 webscript A,由于业务不匹配而抛出错误当然有逻辑。

解决方法我重写了 Java 中的 Web 脚本(没有更改描述符或 url 模式),将它们注册到我的 xml 上下文文件中,然后一切都按预期工作,我的请求实际上到达了 webscript B.