【发布时间】:2012-05-09 21:25:29
【问题描述】:
我们可以在 AJAX 中调用 ATG FormHandler 吗?我有希望吗?
【问题讨论】:
标签: atg
我们可以在 AJAX 中调用 ATG FormHandler 吗?我有希望吗?
【问题讨论】:
标签: atg
通常:是的:-)
但可能性可能有限,或者需要一些奇怪的 hack 才能让它们运行,所以这可能取决于你到底想做什么。
有几种不同的方法:
您不能直接向表单处理程序发送请求,就像您可以在 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,不需要复杂的代码来调用handle方法,创建一个JSP,只需添加dsp:setvalue标签,bean属性应该指向你的handle方法,现在通过简单的ajax调用这个JSP
<dsp:setvalue bean="TestFormahandler.submit" value="" />
这会调用formhandler的handleSubmit
总有一个希望的朋友:)
【讨论】: