как загрузить результат json в сетку после отправки формы struts2 - PullRequest
0 голосов
/ 29 марта 2012

У меня есть сетка, которая отображает данные о загрузке страницы, а также форма, которая при отправке получает переменные из datepicker и, наконец, вызывает действие. Я хочу, чтобы новый результат json загружался на сетке выше, но вместо этого я получаю элементы объекта json на пустой странице ({"JSON": "SUCCESS", "endDate": "28/03/2012", "listOfLogs": [{"date": "27-03-2012" ... и т. Д.)

Это мой код:

<s:url id="getCurrentDateLogs" action="getCurrentDateLogs"/>

<sjg:grid
    id="getLogs"
    dataType="json"
    href="%{getCurrentDateLogs}"
    gridModel="listOfLogs"
    onSelectRowTopics="rowselect"
    loadonce="true"  
    >
    <sjg:gridColumn name="userid" index="userid" title="User ID" sortable="true" align="center"/>
    <sjg:gridColumn name="username" index="username" title="Username" sortable="true"/>
    <sjg:gridColumn name="logaction" index="logaction" width="600" title="Action" sortable="true"/>
    <sjg:gridColumn name="date" index="date" title="Date" sortable="true" sorttype="date" align="center"/>
    <sjg:gridColumn name="time" index="time" title="Time" sortable="true" sorttype="time" align="center"/>     
</sjg:grid>

<s:form action="getLogsByDates" id="form2"  theme="simple" cssClass="yform">
    <table class="">
        <tr><td>from:</td>
            <td><sj:datepicker value="yesterday" id="from" name="startDate" displayFormat="dd/mm/yy" label="from" /></td>
        </tr>
        <tr><td>to:</td> 
            <td><sj:datepicker value="today" id="to" name="endDate" displayFormat="dd/mm/yy" label="to" /></td>
        </tr>
        <tr><td colspan="2">
        <sj:submit
            value="Search" 
            button="true"
            indicator="indicator"
            />
        </td></tr>
    </table>
</s:form>

Я использую следующие библиотеки: Struts2 2.3.1.2 struts2-jquery 3.3.0 struts2-jquery-grid-plugin 3.3.0

Есть предложения? Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Как минимум, ваш sj: submit должен установить атрибут target = "getLogs".Возможно, вам также не хватает других вещей.

0 голосов
/ 29 марта 2012

Сначала вы должны указать идентификатор формы и тему, которая перезагружает значения сетки, в теге sjg: grid.Если вы сделаете это, он отправит значения внутри формы и перезагрузит сетку.Это означает, что ваш метод execute () для действия getCurrentDateLogs должен возвращать JSON.Или вы можете просто переместить метод execute () для действия getLogsByDates в другой метод getCurrentDateLogs.

Так и должно быть:

public class GetCurrentDateLogs extends ActionSupport
{

     public execute()
     {
         return INPUT;
     }

     public String getLogsByDates()
     {
        //Your code, sets listOfLogs, page, total etc...
        return JSON;
     }
}

А в вашем JSP:

<s:url id="getCurrentDateLogs" action=GetCurrentDateLogs" method="getLogsByDates"/>

    <sjg:grid
        id="getLogs"
        formIds="form2"
        reloadTopics="reloadMyGrid"

И вам нужно поменять <sj:submit> на <sj:a> тег и установить кнопкуприписать истине.Он может работать с тегом <sj:submit>, но я никогда не пытался.

Наконец, кнопка должна быть изменена на:

<sj:a button="true" buttonIcon="yourIcon" onClickTopics="reloadMyGrid">Search</sj:a>

Надеюсь, это поможет.

...