Перезагрузка распорок jqGrid с отправкой формы - PullRequest
1 голос
/ 11 июля 2019

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

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

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

Если бы я изменил кнопку формы обратно на <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.log("Test2");
        $( '#gridError' ).html( "" );
    });

    function reloadGrid() {
         console.log("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>

1 Ответ

0 голосов
/ 11 июля 2019

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

...