Перезагрузка struts jqGrid с отправкой формы

У меня есть jgrid struts2, и я хочу иметь возможность обновлять информацию с помощью кнопки отправки формы. Я пытался следовать этому (сообщение SO) [динамическая перезагрузка данных в сетку jquery struts2 при отправке формы], но немного смущен тем, почему мой процесс не работает должным образом. Действие updateRPJson возвращает тип json в качестве ответа, а модель сетки имеет все геттеры/сеттеры и атрибуты, необходимые для работы.

При первой загрузке веб-страницы, содержащей эту сетку, вызывается метод действия, и информация извлекается правильно. Я ожидаю, что кнопка «Обновить», присутствующая внутри формы, отправит информацию из формы в класс действий, а затем повторно заполнит сетку полученным ответом. Я думал, что кнопка обновления опубликует тему «reloadMyGrid», которая затем заставит сетку перезагрузиться, что приведет к вызову действия из href сетки. Я добавил операторы console.info, чтобы определить, что вызывалось, а что нет, а также добавил точки останова внутри моего класса действий, чтобы увидеть, когда он вызывается.

Я обнаружил, что при нажатии кнопки обновления консоль получает «Test2», указывающий, что reloadMyGrid «опубликован» (я не думаю, что это правильный термин), однако мой класс действий никогда не вызывается. Отсутствие «Тест» в консоли говорит о том, что сама форма также не отправляется.

Если бы я заменил кнопку формы обратно на <sj:submit/> и изменил формы onSubmit на action=updateRPJson, страница отображала бы правильную информацию как чистый json (а не внутри сетки). Это наводит меня на мысль, что если действие будет вызвано после нажатия кнопки, это сработает, а не в самом действии.

Я понимаю, что это многословный, несколько конкретный вопрос, но любое понимание того, как процесс обновления jqgrid struts с помощью кнопки отправки формы будет оценен, поскольку я не полностью понимаю пост, на который я ссылался выше, я предполагаю.

Теги:

<%@ page contentType = "text/html; charset=UTF-8"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<%@ taglib prefix = "sj" uri = "/struts-jquery-tags"%>
<%@ taglib prefix = "sjg" uri = "/struts-jquery-grid-tags" %>

Форма:

<s:form id = "getRPInstance" name = "getRPInstance"  onSubmit = "return reloadGrid();" >
    <div class = "type-text" align = "center" style = "width:50%;text-align:right;float:left">
                <s:select
                   name = "location"
                   id = "location"
                   list = "#{'unit':'Unit', 'acceptance':'Acceptance', 'integration':'Integration','production':'Production'}"
                   value = "%{#session.location}"
                   required = "true"/>
                <s:select
                    name = "realm"
                    id = "realm"
                    list = "#{'int':'Internal', 'ext':'External', 'cld':'Cloud' }"
                    value = "%{#session.realm}"
                    required = "true"/>
                <div id = "buttonDiv" class = "type-button" align = "center">
                    <sj:a button = "true" onClickTopics = "reloadMyGrid">Refresh</sj:a>
                </div>
    </div>
</s:form>

Скрипты:


    <script>

    $.subscribe('reloadMyGrid',function()
    {
        console.info("Test2");
        $( '#gridError' ).html( "" );
    });

    function reloadGrid() {
         console.info("Test");
         $('#gridtable').trigger('reloadMyGrid');
         return false;
     }
    </script>

Сетка:


    <s:url var = "remoteurl" action = "updateRPJson"/>
    <sjg:grid
        id = "gridtable"
        caption = "Reverse Proxy"
        dataType = "json"
        href = "%{remoteurl}"
        pager = "true"
        gridModel = "proxies"
        rowList = "10,15,20,50"
        rowNum = "20"
        rownumbers = "true"
        reloadTopics = "reloadMyGrid"
        formIds = "getRPInstance"
        height = "600"
        width = "650"
        loadonce = "true"
    >
        <sjg:gridColumn name = "name" index = "name" title = "Name" key = "true" hidden = "true" sortable = "false"/>
        <sjg:gridColumn name = "label" index = "label" title = "Label" sortable = "true"/>
    </sjg:grid>

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понял, проблема кроется в самой сетке распорок. Это было исправлено установкой для loadonce значения false.

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