Jsp CQ5/Sling-处理POST请求

Jsp CQ5/Sling-处理POST请求,jsp,post,aem,sling,Jsp,Post,Aem,Sling,我是CQ5新手,需要用我的组件处理HTTP POST请求。我有以下目录结构 /apps/TEST_project/components/myComponent/myComponent.jsp /apps/TEST_project/components/myComponent/myComponent.POST.jsp 以及myComponent.jsp中的此表单 <form action="<%resource.getPath();%>myPage.html" method="

我是CQ5新手,需要用我的组件处理HTTP POST请求。我有以下目录结构

/apps/TEST_project/components/myComponent/myComponent.jsp
/apps/TEST_project/components/myComponent/myComponent.POST.jsp
以及myComponent.jsp中的此表单

<form action="<%resource.getPath();%>myPage.html" method="POST" enctype="multipart/form-data">
Name <input type="text" name="name" /><br />
E-mail <input type="text" name="email" /><br />
File <input type="file" name="file" /><br />
    <input type="submit" id="Upload" value="Upload" title="Upload" />
</form>

名称
电子邮件
文件
但每当我提交表格时,我只会看到一页告诉我这一点

Content modified /content/TEST_project/myPage

Status  
200
Message 
OK
Location    /content/TEST_project/myPage
Parent Location /content/TEST_project
Path    
/content/TEST_project/myPage
Referer http://localhost:4502/content/TEST_project/myPage
ChangeLog   
<pre></pre>
内容修改/Content/TEST\u项目/myPage
地位
200
消息
好啊
位置/内容/测试项目/myPage
父位置/内容/测试项目
路径
/内容/测试项目/myPage
推荐人http://localhost:4502/content/TEST_project/myPage
变更日志
而不是myComponent.POST.jsp脚本


昨天我花了几个小时试图使这项工作,但没有任何结果。。。感谢您的帮助

尝试将myComponent.POST.jsp重命名为POST.jsp。我相信按照您现在的方式,您的myComponent.POST.jsp脚本将映射到一个类似../myPage.POST.html的请求

查看Adobe关于如何将请求映射到组件脚本的备忘单:

在表单操作中,将操作更改为 动作=”“

谢谢,
Balaji.

通过在动作末尾添加
myPage.html
,表单的动作将变成
/content/TEST\u project/myPage.html

由于
/content/TEST\u project/myPage
无法解析为资源,因此默认情况下,Sling将在此位置创建一个资源(状态为
201 Created
)。如果您再次尝试发布,它现在将针对这个新节点进行解析,但是由于这个节点没有资源类型,它现在使用默认的Post servlet来修改这个资源

正如其他人所说,要让JSP处理表单提交,表单操作必须是
.html
.html
(扩展名“.html”是可选的,但与上面的语法一致)


这意味着表单提交仍将解析为资源类型
/apps/TEST\u project/components/myComponent
。从这里开始,您的文件名
myComponent.POST.jsp
应该可以解决POST请求并处理表单提交。

为什么要在表单操作的末尾添加mypage.html?动作应该是资源本身。否则,您正在修改另一个可能不是“myComponent”资源的节点。