dynamic data reload to struts2 jquery grid on form

2019-08-02 07:53发布

I have a grid which load data on page load. I also have a form that on submit calls an action correctly, but it doesn't load new data on my grid.

List is correctly geting and also correctly setting in my grid model From my Action class but while on return SUCCESS it simply returns data in this form(see below output)...

{"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"} 

My jsp code:

         <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> 

** I don't know why my output is not showing in my jquery grid. Please help me**

3条回答
Melony?
2楼-- · 2019-08-02 08:08

I guess this is what you require :

  1. Instead of using a sj:submit tag, use a sj:a tag with onClickTopics pointing to GridReloadTopics.

  2. Then when sj:a is clicked, the grid get's reloaded, submitting the form to action defined in href attribute of grid.

  3. This action must result a JSON which will populate the grid.

You haven't shown the action "getCurrentDateLogs" in the question. So this is the action that must return the json result populating the grid.

Also you must be thinking that how the grid-data gets affected by the form fields, so it's easy

  1. The grid submits all the form fields to the action mentioned in href, so you must be having a getter & setter for every form field on that action.

  2. Along with other normal grid attributes, now you'll receive the additional form attributes, based on the value of which you'll fill up the gridModel.

Please let me know if you still didnt' understood.

查看更多
欢心
3楼-- · 2019-08-02 08:27

It doesn't work this way. try do the following things:

  1. make an action retuen a page, not json

    <result name="success">page_with_the_grid.jsp</result>
    
  2. on the page page_with_the_grid.jsp, use s:url tag to map your json result:

    <s:url var="jsonUrl" action="jsonAction"/>
    
  3. in your sj:grid, use href="%{jsonUrl}" to fill your data to the grid.

if you directly call the action, which returns JSON, you will sure get a json result, which is your "Strange" output.

查看更多
唯我独甜
4楼-- · 2019-08-02 08:31

I have find Two grid after submit the form one is old one and second one my search grid it also include whole page

<sj:a  href="%{form}" targets="result" indicator="indicator" button="true" buttonIcon="ui-icon-refresh"/>
查看更多
登录 后发表回答