DisplayTag - создать первую страницу через Ajax

Что я умею делать:

отправить форму поиска с помощью обычного запроса (не Ajax), а на новой веб-странице результатов показать первую страницу таблицы (созданной DisplayTag), которую можно разбить на страницы запросами Ajax (чтобы включить Ajax с DisplayTag, я использую плагин jQuery displaytag-ajax ).

Что я хочу сделать, но не знаю как:

Я хочу создать первую страницу таблицы (на основе отправленной формы поиска) с помощью Ajax. То есть я хочу отправить форму поиска через Ajax и создать первую страницу таблицы результатов с разбиением на страницы Ajax на той же веб-странице формы поиска, не загружая новую веб-страницу.

Любые идеи, как этого можно достичь?


person rapt    schedule 13.01.2012    source источник


Ответы (2)


Вы можете использовать функцию jQuery load, чтобы загрузить ответ из запроса AJAX на заданный URL-адрес в div , и вы можете использовать функцию serialize для преобразования набора входных данных формы поиска в строку запроса. .

Страница JSP, используемая для создания первой страницы таблицы, должна просто генерировать таблицу:

<%@ page ...%>
<%@ taglib ...%>
<display:table>
    ...
</display:table>
person JB Nizet    schedule 13.01.2012
comment
У меня нет проблем с отправкой (Ajax) формы поиска на сервер. Но вы предполагаете, что ответ на запрос Ajax представляет собой строку HTML, созданную DisplayTag. Но сейчас мой код Java создает только список объектов Java для отображения на первой странице таблицы. Вы не объяснили, как я преобразовываю (во время Ajax-запроса) этот список в строку HTML - как мне сделать в моем Java-коде что-то вроде Sting tableHTML = DisplayTag.createTableHTML(resultList); ?? - person rapt; 13.01.2012
comment
Вы делаете это так же, как и для стандартного запроса. Отправка в JSP, и этот JSP сгенерирует таблицу HTML (и только таблицу HTML) с использованием тега отображения. Затем эта HTML-таблица будет отправлена ​​в ответе, и JavaScript включит таблицу в модель DOM. - person JB Nizet; 13.01.2012
comment
это имеет смысл. Но я не уверен, как сгенерированная таблица HTML может быть захвачена кодом Java после отправки. Не могли бы вы предоставить пример кода для этого? - person rapt; 13.01.2012
comment
Почему вы хотите захватить сгенерированный HTML-код в коде Java? Сгенерированный HTML отправляется в HTTP-ответ, как и в случае обычного HTTP-запроса. Единственное отличие состоит в том, что вы отправляете только часть HTML-страницы, а не всю HTML-страницу. - person JB Nizet; 13.01.2012
comment
Понятно, поэтому я не уверен, как выполнить отправку на страницу JSP из метода контроллера Spring, который обрабатывает запрос Ajax (что должен возвращать метод контроллера в этом случае?) - не могли бы вы предоставить базовый код для этого? - person rapt; 13.01.2012
comment
Что делает контроллер для обычной отправки формы, которая возвращает полную страницу? Вы сказали в своем вопросе, что знаете, как это сделать. Сделайте то же самое, но с JSP, который генерирует только таблицу, как показано в моем ответе. Обычный запрос и запрос AJAX — это одно и то же. Единственная разница в том, что браузер делает с ответом. - person JB Nizet; 13.01.2012
comment
Спасибо. Ты прав. На стороне контроллера я должен обрабатывать запрос так же, как и любой обычный HTTP-запрос. По какой-то причине я подумал, что мне нужно будет использовать request.getRequestDispatcher("jspfile").forward(request, response);. Вместо этого мой код метода контроллера должен выглядеть примерно так: public String ajaxResponse(HttpServletRequest request, HttpServletResponse response) { request.setAttribute("command", "hello world"); return "jspfile"; } -- опять же, то, что вы предложили. - person rapt; 16.01.2012

Используйте jQuery.post(), чтобы отправить форму через AJAX. Когда ответ получен, удалить() форму из DOM и add() ответ.

person George Cummins    schedule 13.01.2012
comment
Проблема с ответом, который я получаю. Мой Java-код получает (из базы данных) список объектов, которые я хочу показать на первой странице таблицы. Но, согласно вашему ответу, есть способ использовать этот список для создания таблицы HTML (на основе списка тегов DisplayTag в моем файле JSP) — DisplayTag выполняет этот перевод для меня во время обычного запроса, но я не знаете, как выполнить этот перевод во время запроса Ajax - очевидно, мне придется получить доступ к коду JSP из кода java (?) --- вы знаете, как это сделать? Или я что-то пропустил здесь. - person rapt; 13.01.2012
comment
AJAX-запрос и обычный запрос — это одно и то же для сервера. Просто создайте таблицу displaytag, как если бы вы делали это для обычного запроса. Единственное отличие состоит в том, что HTML-код, сгенерированный запросом AJAX, должен включать только таблицу, а не весь HTML-код до и после таблицы. - person JB Nizet; 13.01.2012