我们可以通过AJAX调用ATG FormHandler吗?我有希望吗?
答案 0 :(得分:6)
一般来说:是: - )
但可能性有限或需要一些奇怪的黑客来让它们运行,所以它可能取决于你想要做什么。
有几种不同的方法:
您无法直接向表单处理程序发送请求,就像您可以在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组件一样......
答案 1 :(得分:3)
是的,在你正在向你发出ajax请求的页面中调用handle方法。
答案 2 :(得分:0)
我使用API完成了这项工作。
您需要使用API填充所需的表单数据,然后从API调用handle方法。如果需要,可以使用ATG的REST API或Spring。
答案 3 :(得分:-1)
只需编写一个简单的JSP就不需要复杂的代码来调用handle方法,创建JSP并只添加dsp:setvalue标记,bean属性应该指向你的句柄方法,现在通过简单的ajax调用这个JSP
<dsp:setvalue bean="TestFormahandler.submit" value="" />
这将调用formhandler的handleSubmit
并且总有希望的朋友:)