AEM CQ5 servlet不会在本地环境中调用

时间:2018-05-07 09:25:42

标签: servlets cq5 development-environment

我对AEM开发很新,我在本地环境中遇到了一些问题。 我正在使用的代码与当前服务器上的代码相同(一切正常),所以我想我必须有一些错误的配置。

所以我在尝试下载资产时应该调用这个servlet:

@Component(metatype = false)
@Service
@Properties({ @Property(name = "sling.servlet.resourceTypes", value = "sling/servlet/default"),
    @Property(name = "sling.servlet.methods", value = { "GET", "POST" }),
    @Property(name = "sling.servlet.selectors", value = "assets") })
public class AssetDownloadServlet extends SlingAllMethodsServlet

它由“assets”选择器触发,例如

http://localhost:4502/content/.assets.zip?path=content/folder/asset.jpg&_charset_=utf-8

事情是,如果我在栏中写这样的URL,它就可以了。 servlet被调用并下载asset.jpg。

什么是无效的Javascript代码,当用户点击按钮,构建URL,将其放入隐藏的表单然后提交表单。在这种情况下,servlet根本没有被调用(我在调试模式中放置了一些断点来检查),然后出现以下页面:

Status           200
Message          OK
Location         /content/aem/download
Parent Location  /content/aem
Path             /content/aem/download
Referer          http://localhost:4502/content/aem/download.html
ChangeLog        <pre></pre>

Go Back
Modified Resource
Parent of Modified Resource

正如我所说,代码不应该是错误的,因为它在服务器上运行。我甚至不知道在哪里可以了解我在当地做错了什么。

编辑:

我打开了一个相关的问题,因为问题可能是另一种性质:CQ5 FormPanel sends HTTP POST in Chrome and HTTP GET in IE

1 个答案:

答案 0 :(得分:0)

我发现你的网址中没有选择器:

http://localhost:4502/content/assets.zip?path=content/folder/asset.jpg&_charset_=utf-8

我在这里可以看到

  • potocol + host:http://localhost:4502
  • 资源路径:/ content / assets
  • 扩展名:.zip
  • param1:path = content / folder / asset.jpg
  • param2: charset = utf-8

如果您希望触发servlet,则应在路径和扩展名之间添加选择器( .assets

http://localhost:4502/content/assets.assets.zip?path=content/folder/asset.jpg&_charset_=utf-8

请参阅文档:Sling url decomposition

Sling url decomposition: