2012-03-28 8 views
0

laden Ich habe ein Raster, das Daten beim Laden der Seite anzeigt, und auch ein Formular, das beim Senden die Variablen von Datepicker erhält und schließlich eine Aktion aufruft. Ich möchte, dass das neue JSON-Ergebnis oben auf Raster geladen wird, aber statt dessen bekomme ich die JSON-Objektelemente auf einer leeren Seite ({"JSON": "SUCCESS", "endDate": "28/03/2012", "listOfLogs ": [{" Datum ":" 27-03-2012" ... etc.)wie JSON Ergebnis auf Gitter nach Struts2 Formular Einreichung

Dies ist mein Code:

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

i folgende libs bin mit: struts2 2.3.1.2 struts2-jquery 3.3.0 struts2-jquery-grid-plugin 3.3.0

Irgendwelche Vorschläge? Vielen Dank!

Antwort

0

Zuerst sollten Sie die Formular-ID und ein Thema, das die Rasterwerte erneut lädt, auf sjg: grid-Tag angeben. Wenn Sie das tun, übergibt es die Werte innerhalb des Formulars und lädt das Raster neu. Dies bedeutet, dass Ihre execute() -Methode für die Aktion getCurrentDateLogs JSON zurückgeben soll. Oder Sie können die execute() -Methode der getLogsByDates-Aktion einfach in eine andere Methode auf getCurrentDateLogs verschieben.

So sollte es sein:

public class GetCurrentDateLogs extends ActionSupport 
{ 

    public execute() 
    { 
     return INPUT; 
    } 

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

Und in Ihrer JSP:

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

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

Und Sie sollten <sj:submit>-<sj:a> Tag, ändern und Schaltfläche Attribut auf true gesetzt. Es könnte mit <sj:submit> Tag funktionieren, aber ich habe es nie versucht.

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

Hoffnung:

Schließlich sollte die Taste geändert werden.

+0

Ich versuchte, aber immer noch nicht funktioniert, mein Code ist bei http://StackOverflow.com/Questions/14466984/struts2-Jquery-Grid-ajax-Data-Reload-on-Form-Submit –

+0

Haben Sie genau das tun gleich? Wie ich in dem anderen Beitrag sehen kann, hat Ihnen eine andere Person gesagt, dass Sie onClickTopics anstelle von onSuccessTopics verwenden sollen, was ich Ihnen gesagt habe – batbaatar

0

Zumindest sollte Ihr sj: submit das Attribut targets = "getLogs" setzen. Sie können jedoch auch andere Dinge vermissen.

Verwandte Themen