AEM Publish实例表单提交失败(错误码AEM-AF-901-004)求解决方案
AEM Forms Publish实例提交失败解决方案
环境信息
- AEM版本/SP:6.5.11
- AEM Forms附加包:
adobe-aemfd-linux-pkg-6.0.566-NPR-37836-B0001.zip
问题描述
Author实例创建的AEM表单提交功能正常,但发布至Publish实例后,所有提交动作均失败。测试过的提交动作包括:
- 未配置任何动作
- Forms Portal提交动作
- 通过电子邮件发送PDF
- 发送电子邮件
- 提交至Rest端点
- 异步提交(重定向至URL、显示消息)
错误提示:[AF] [AEM-AF-901-004]: 提交表单时遇到内部错误。
对比Author与Publish实例的提交差异:
- Publish实例中,请求
/aem-forms-01/jcr:content/guideContainer.af.internalsubmit.jsp返回500服务器错误,请求头Content-Type为text/html;charset=utf-8; - Author实例中该请求的
Content-Type为application/json。
错误日志显示:Publish实例中表单数据以纯文本格式提交,系统期望JSON格式,出现解析错误:
com.adobe.aemds.guide.internal.impl.servlet.GuideInternalSubmitServlet Expected a ':' after a key at character 7 of {"guideState":{"guideDom":...
解决方案
1. 检查Dispatcher配置(若使用Dispatcher)
- 确保Dispatcher未修改请求的
Content-Type,针对*.af.internalsubmit.jsp这类请求,允许application/json的Content-Type通过,禁止篡改请求体。 - 检查Dispatcher的
filters配置,确认未过滤JSON格式的请求体,也未强制将Content-Type转换为text/html。 - 验证Dispatcher的
cache规则,确保该请求不被缓存,且允许POST请求通过。
2. 验证Servlet映射一致性
- 在Publish实例的OSGi控制台,找到
com.adobe.aemds.guide.internal.impl.servlet.GuideInternalSubmitServlet,检查其url-pattern是否正确映射*.af.internalsubmit.jsp。 - 对比Author实例的该Servlet配置,确保Publish实例的配置完全一致,无缺失或修改。
3. 排查客户端JS加载问题
- 打开Publish实例的表单页面,查看浏览器控制台是否存在JS错误,确认表单提交相关脚本(如
guideSubmit.js)是否正确加载。 - 验证表单页面加载的脚本版本与Author实例一致,排除发布或CDN缓存导致的旧版本脚本问题。
4. 检查自定义Filter或Rewriter配置
- 排查Publish实例上的自定义Filter,确认无代码将POST请求的
Content-Type强制转换为text/html。 - 查看Apache Sling Rewriter配置,确保未重写请求的
Content-Type头。
5. 重新部署AEM Forms附加包
- 确认Publish实例的AEM Forms附加包版本与Author完全一致,重新安装
adobe-aemfd-linux-pkg-6.0.566-NPR-37836-B0001.zip,安装完成后重启实例验证。
6. 检查字符编码配置
- 确保Publish实例的JVM参数设置了正确的字符编码(如
-Dfile.encoding=UTF-8),与Author实例一致。 - 验证表单提交的请求体无乱码或字符截断情况。
内容的提问来源于stack exchange,提问作者Abhishek Sinha
相关产品推荐
相关产品推荐

