动态数据重新加载到表单提交的struts2 jquery网格

时间:2012-11-04 13:07:21

标签: struts2 struts2-jquery jqgrid

我有一个网格,可以在页面加载时加载数据。 我还有一个表单,提交时正确调用一个动作,但它不会在我的网格上加载新数据。

列表是正确的geting并且在我的网格模型中正确设置从我的Action类中,但在返回SUCCESS时它只返回此表单中的数据(参见下面的输出)......

{"authFirstname":null,"authLastname":null,"bookDetailsobj":null,"bookTitile":null,"get":{"authFirstname":null,"authLastname":null,"bookTitile":null,"coverId":null,"createdDate":null,"createrId":null,"description":null,"editionId":null,"editionYear":null,"id":null,"img1":null,"img2":null,"isbn":null,"languageId":null,"locationId":null,"price":null,"publisherName":null,"quantity":null,"remarks":null,"subjectId":null,"updateId":null,"updatedDate":null,"videoUrl":null},"gridModel":[{"authFirstname":"234234","authLastname":"2323423","bookTitile":"23324234234","coverId":"soft cover","description":"243234","editionId":"General Edition","editionYear":"234234","id":42,"img1":"","img2":"","isbn":"324234","languageId":"English","locationId":"as","price":2.34234E7,"publisherName":"234234","quantity":234234,"remarks":"","subjectId":"General Fiction","videoUrl":""},{"authFirstname":"2423","authLastname":"23423","bookTitile":"asdfsdaf","coverId":"soft cover","description":"","editionId":"General Edition","editionYear":"2","id":39,"img1":"","img2":"","isbn":"2","languageId":"English","locationId":"as","price":234.0,"publisherName":"2","quantity":2,"remarks":"","subjectId":"General Fiction","videoUrl":""},{"authFirstname":"3","authLastname":"3","bookTitile":"232","coverId":"soft cover","description":"","editionId":"General"} 

我的jsp代码:

         <sjg:grid
                id="getLogs"
                dataType="json"
                href="%{getCurrentDateLogs}"
                gridModel="listOfLogs"
                onSelectRowTopics="rowselect"
                loadonce="true"
                reloadTopics="reloadGrid"
                formIds="form2"
            >
            <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"
                        onClickTopics="reloadGrid"
                    indicator="indicator"
                    />
                </td></tr>
            </table>
         </s:form>

struts.xml中

 <action name="getLogsByDates" class="v.esoft.actions.bookdetails.BookdetailsAction" >
            <result name="success"  type="json"/>
            <result name="login" type="redirect"> /index.jsp </result>
   </action> 

** 我不知道为什么我的输出没有显示在我的jquery网格中。请帮帮我**

3 个答案:

答案 0 :(得分:2)

我想这就是你所需要的:

  1. 使用带有指向GridReloadTopics的onClickTopics的sj:标记,而不是使用sj:submit标记。

  2. 然后当单击sj:a时,重新加载网格,将表单提交到网格的href属性中定义的操作。

  3. 此操作必须生成一个将填充网格的JSON。

  4. 您没有在问题中显示“getCurrentDateLogs”操作。所以这是必须返回填充网格的json结果的动作。

    此外,您必须考虑网格数据如何受到表单字段的影响,因此很容易

    1. 网格将所有表单字段提交给href中提到的操作,因此您必须拥有一个getter&amp;该行动的每个表格字段的setter。

    2. 与其他常规网格属性一起,现在您将收到其他表单属性,具体取决于您将填充gridModel的值。

    3. 如果你还没理解,请告诉我。

答案 1 :(得分:0)

这种方式不起作用。尝试做以下事情:

  1. 让一个动作重新调整页面,而不是json

    <result name="success">page_with_the_grid.jsp</result>
    
  2. 页面page_with_the_grid.jsp上的
  3. ,使用s:url标记来映射您的json结果:

    <s:url var="jsonUrl" action="jsonAction"/>
    
  4. 在您的sj:grid
  5. ,使用href="%{jsonUrl}"将数据填充到网格中。

  6. 如果你直接调用返回JSON的动作,你肯定会得到一个json结果,这是你的“奇怪”输出。

答案 2 :(得分:0)

我在提交表单后找到两个网格,一个是旧的,第二个是我的搜索网格,它还包括整页

<sj:a  href="%{form}" targets="result" indicator="indicator" button="true" buttonIcon="ui-icon-refresh"/>