我对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
答案 0 :(得分:0)
我发现你的网址中没有选择器:
http://localhost:4502/content/assets.zip?path=content/folder/asset.jpg&_charset_=utf-8
我在这里可以看到
如果您希望触发servlet,则应在路径和扩展名之间添加选择器( .assets )
http://localhost:4502/content/assets.assets.zip?path=content/folder/asset.jpg&_charset_=utf-8
请参阅文档:Sling url decomposition