2017-12-21 5 views
-1

Ich arbeite derzeit an einem Schulprojekt, das aus der Entwicklung eines Spiels mit Struts2/Jsp besteht. Das Problem, das ich habe, ist, kann ich nicht Daten aus meiner ActionClass zu meinem JSP mit jQuery. Es funktioniert super andersherum und ich habe mehrere Quellen dafür gefunden.Daten von ActionClass zu Jsp Struts2

Hier ist mein minimiert "GameAction.class":

private String playerColor; 
private Map<String,Object> applicationMap; 

public String execute(){ 

playerColor = ((Joueur)applicationMap.get("joueur")).getPlayerColor(); 
    return SUCCESS; 
} 

HINWEIS: alles hat einen Getter/Setter.

game.js:

var $playerColor; 
$(window).on('load', function() { 

$.ajax({ 
    type : "GET", 
    url : "gotoGameAction", 
    data : "playerColor=", 
    success : function (data) { 
    $playerColor = data; 
    var html = "<h2>" + $playerColor.toString() + "</h2>"; 
    $("#playerColor").html(html); 
    } 

}) 

}); 

struts.xml:

<package name="default" extends="json-default" namespace="/"> 
    <action name="gotoGameAction" class="actions.logins.GameAction"> 
     <result name="success" type="json">/WEB-INF/views/game.jsp</result> 
    </action> 
</package> 

Dieser Ausgang ich auf meinem JSP haben, ist: [object Object].

Ich kann wirklich nicht bekommen, was da los ist kann jemand helfen? Vielen Dank!

Antwort

0

Ich habe einige Fehler in Ihrem Code gefunden. Es kann hilfreich für Sie sein.

In struts.xml

Seine

<result name="success" type="json">playerColor</result> 

statt

<result name="success" type="json">/WEB-INF/views/game.jsp</result> 

Hier Typ json so übergebene Variable werden.

Und playerColor sollte Getter-Methode in GameAction haben.

In Ajax-Aufruf einfach

success : function (data) { 
    $("#playerColor").html("<h2>" + data + "</h2>"); 
} 
+0

Ich habe bereits einen Getter/Setter für playerColor und habe bereits type = "json". Ich habe Daten anstelle von PlayerColor in HTML, aber immer noch das gleiche Problem –

+0

was über 'result' Tag in' struts.xml'. @AymaneELJahrani – Satya

+0

Ich habe versucht, PlayerColor anstelle meines Links zu setzen: Es hat nicht funktioniert –

0

Sie verstehen vielleicht nicht, was ein JSON Ergebnistyp ist und wie der Inhalt durch die Aktion zur Verfügung gestellt wird, die dieses Ergebnis Typen ausgeführt wird.

Um mehr über Plugin und Dokumentation zu erfahren, siehe JSON Plugin.

Sie können auch im Quellcode der Klasse suchen, die gerade ausgeführt wird JSONResult. Dann sehen Sie, dass

/** 
* This result type doesn't have a default param, null is ok to reduce noise in logs 
*/ 
public static final String DEFAULT_PARAM = null; 

jedoch ein solches Rauschen manchmal hilfreich, wenn Sie den Code debuggen.

dass kein Sinn in Ihrem Code macht

<result name="success" type="json">/WEB-INF/views/game.jsp</result> 

Das müssen Sie in das Tutorial und Beispiele graben, wie dieses Ergebnis verwenden. Eine davon finden Sie here.

Ein anderer link könnte Ihnen helfen zu entscheiden, ob Sie ein Json-Ergebnis benötigen oder ein anderes für die JSON-Antwort geeignetes Ergebnis verwenden möchten.

Kombinieren Sie all das zusammen, um eine Idee zu bekommen, Ihren Code neu zu schreiben, damit er funktioniert.

+0

Keiner von Ihnen hat mir geholfen, dass ich diese mysefl durch die Verwendung von $ .getJSON statt einer klassischen get gelöst Anfrage mit $ .ajax. Aber danke :) –

+0

'getJson' ist das gleiche wie Ajax Eigenschaften nach Standardwerten festgelegt. –

Verwandte Themen