Как вызывать FormHandler через AJAX напрямую

Можем ли мы вызвать ATG FormHandler thu AJAX? У меня есть надежда?

4 ответа

Решение

Вообще: да:-)

Но возможности могут быть ограничены или требовать каких-то странных хаков для их запуска, поэтому это может зависеть от того, что именно вы хотите сделать.

Есть несколько разных подходов:

Вы не можете напрямую отправлять запросы обработчику формы, как вы могли бы делать это с сервлетом или контроллером в таких средах, как Struts или Spring MVC, но вместо этого вы всегда должны иметь форму на странице JSP (созданной с использованием тега DSP), а затем отправьте эту форму. Это означает, что вы не можете запустить обработчик формы, не имея соответствующей формы для него на своей странице JSP. Но если у вас есть эта форма на вашей странице, вы можете отправить ее через запрос AJAX. После этого ваш AJAX-запрос вызовет обработчик формы и вернет результат так же, как и при обычной отправке формы. Такой подход возможен и в целом работает. Если вы не хотите, чтобы форма для вашего AJAX-запроса была видна на странице, вы можете скрыть ее, например, с помощью CSS.

Другой подход заключается в использовании модуля веб-сервисов REST ATG, который позволяет вам представить любой компонент как веб-сервис RESTful. Это также позволяет вам вызывать обработчики форм без необходимости иметь форму для них или сначала отображать страницу JSP. Документ под названием "Руководство по веб-сервисам ATG и инфраструктуре интеграции" (из документации Oracle ATG) содержит целую главу о том, как вызывать обработчик форм в качестве веб-службы REST.

Или вы можете написать небольшой пользовательский сервлет, который получает ваш AJAX-запрос, а затем использует полученные данные для вызова обработчика формы, как если бы он выполнял поиск и вызывал любой другой компонент Nucleus...

Да, вызовите метод handle на странице, к которой вы делаете запрос ajax.

Я сделал это с помощью API.

Вам нужно использовать API для заполнения требуемых данных формы, а затем вызывать метод handle из API. Вы можете использовать REST API ATG или Spring, если хотите.

Просто сделайте простой JSP без необходимости сложного кода для вызова метода handle, создайте JSP и просто добавьте тег dsp:setvalue, и атрибут bean должен указывать на ваш метод handle, теперь вызывайте этот JSP через простой ajax

<dsp:setvalue bean="TestFormahandler.submit" value="" />

это вызовет handleSubmit formhandler

и всегда есть надежда друга:)

Другие вопросы по тегам