Abrufen von Daten von handsontable zu Struts2 Aktion über JSON funktioniert nicht

8

Ich verwende das struts2-json-Plugin, um JSON-Daten zu generieren, und Ajax, um die Tabelle (handsontabel) mit Daten aus diesem JSON ( nach die Quelle ).

Nun muss ich Daten von der Tabelle zu Struts2 Action mit Ajax von JSON abrufen. Zuerst habe ich eine Tabelle mit Daten implementiert, die von JSON von Struts2 Action an Handsontable übergeben wurden, das war ziemlich einfach und es funktioniert. Aber warum speichern nicht funktionieren, wie Sie im beigefügten Code unten sehen können?

Wie ich in einem Firebug sehe, wird der POST gesendet und im Debug wird die Anfrage in meiner JSONSaveAction-Aktion abgerufen, aber die Felddaten werden nicht mit JSON-Daten gefüllt, warum? Daten sollten nicht automatisch mit dem struts2-json-Plugin an das Java-Objekt gebunden werden? Was mache ich falsch?

Im handschriftlichen Teil ist die Funktion handsontable.getData() für das Abrufen ganzer Daten aus der Tabelle zuständig. Also benutze ich es so, aber ohne Erfolg:

%Vor%

Die Funktion handsontable.getData() ruft wirklich alle Daten ab, die ich überprüft habe, aber stattdessen werden die Daten nicht in Java-Objekt List<Report> data in meiner JSONSaveAction-Aktion gebunden. Weißt du warum?

Hier ist Screenshot mit meiner Tabelle und Firebug Info nach POST-Anfrage:

Aktion, die JSON an handsontable sendet (funktioniert gut):

%Vor%

JSON, das gesendet wird, um die automatisch generierte Tabelle zu füllen:

%Vor%

Aktion Abrufen von Daten aus der Tabelle über JSON (funktioniert nicht):

Hier ist das Feld List<Report> data immer Null, es werden keine Daten von JSON aufgefüllt: (

%Vor%

Berichtsklasse:

%Vor%

Laden & amp; Speichern Sie Daten über JSON in und aus der Tabelle:

%Vor%

Bitte helfen Sie mir, wie man Daten von der Tabelle zum Java-Objekt korrekt abruft, weil es mich wirklich blockiert hat. Ich weiß nicht, was ich falsch mache ...

Vielen Dank für jede Eingabe!

    
Roman 21.05.2013, 17:17
quelle

2 Antworten

3

Ich habe es behoben.

1: In struts.xml add:

%Vor%

2: Fügen Sie in der Ajax-Anfrage Folgendes hinzu:

%Vor%

3: Ändern Sie das JSON-Format, das automatisch von Hand beschreibbar ist. Es gab in JSON einige Zeichen wie:% 5B% 5D% 7B% 7D% 22 anstatt: [] {} "

Ich habe sie durch eigene fixedEncodeURI () -Funktion ersetzt:

%Vor%     
Roman 22.05.2013, 11:20
quelle
1

Ich habe Ihren Code nicht gründlich untersucht, aber auf den ersten Blick scheint es, dass Sie die data -Kollektion löschen, wenn Sie eine neue mit dem new ArrayList<Report>() in Ihrem Action erstellen. Lassen Sie einfach die Deklaration private List<Report> data; .

    
Armaggedon 21.05.2013 17:57
quelle