如何在struts2表单提交后加载网格上的json结果

时间:2012-03-28 20:32:59

标签: java jquery struts2 jqgrid

我有一个显示页面加载数据的网格,还有一个表单,提交时从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 :(得分:0)

首先,您应该在sjg:grid标记上指定表单ID和重新加载网格值的主题。如果这样做,它会在表单中提交值并重新加载网格。这意味着你的action()方法对action getCurrentDateLogs应该返回JSON。或者您可以将getLogsByDates操作上的execute()方法移动到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>代码,并将button属性设置为true。它可能适用于<sj:submit>标记,但我从未尝试过。

最后,按钮应更改为:

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

希望这有帮助。

答案 1 :(得分:0)

至少,你的sj:submit应该设置属性targets =“getLogs”。你可能也会遗漏其他东西。