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:
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:
JSON, das gesendet wird, um die automatisch generierte Tabelle zu füllen:
%Vor% Hier ist das Feld List<Report> data
immer Null, es werden keine Daten von JSON aufgefüllt: (
Berichtsklasse:
%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!
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% 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;
.
Tags und Links jquery ajax handsontable struts2 struts2-json-plugin