我们可以通过 AJAX 调用 ATG FormHandler 吗?我有希望吗?
4 回答
一般来说:是的:-)
但是可能性可能是有限的,或者需要一些奇怪的黑客来让它们运行,所以它可能取决于你到底想做什么。
有几种不同的方法:
您不能直接将请求发送到表单处理程序,就像您可以在 Struts 或 Spring MVC 等框架中使用 servlet 或控制器一样,但您始终必须在 JSP 页面中有一个表单(使用 DSP taglib 创建),然后提交该表格。这意味着如果您的 JSP 页面中没有相应的表单,您将无法触发表单处理程序。但是,如果您的页面中有该表单,您可以通过 AJAX 请求提交它。然后,您的 AJAX 请求将触发表单处理程序并以与正常表单提交相同的方式获取结果。这种方法是可能的并且通常有效。如果您不想让 AJAX 请求的表单在页面中可见,您可以隐藏它,例如使用 CSS。
另一种方法是使用 ATG 的 REST Web 服务模块,它允许您将任何组件公开为 RESTful Web 服务。这还允许您调用表单处理程序,而无需为它们提供表单或首先呈现 JSP 页面。标题为“ATG Web 服务和集成框架指南”的文档(来自 Oracle 的 ATG 文档)有一整章介绍了如何将表单处理程序作为 REST Web 服务调用。
或者您可以编写一个小的自定义 servlet 来接收您的 AJAX 请求,然后使用接收到的数据来调用表单处理程序,就像它会查找和调用任何其他 Nucleus 组件一样......
是的,在您发出 ajax 请求的页面中调用 handle 方法。
我已经使用 API 完成了这项工作。
您需要使用 API 填充所需的表单数据,然后从 API 调用 handle 方法。如果需要,您可以使用 ATG 的 REST API 或 Spring。
只需制作一个简单的 JSP 不需要复杂的代码来调用句柄方法,创建一个 JSP 并添加 dsp:setvalue 标记和 bean 属性应该指向您的句柄方法,现在通过简单的 ajax 调用这个 JSP
<dsp:setvalue bean="TestFormahandler.submit" value="" />
这将调用 formhandler 的 handleSubmit
总有一个希望的朋友:)