Wie die Rückkehr der Liste der Objekte aus dem controller und zeigt diese mit Hilfe von JQuery (Spring MVC, ajax)
Zuerst, dies ist mein controller:
@Controller
public class MainController {
@Autowired
SqlSession sqlSession;
@Autowired
Message messageVO;
@RequestMapping(value="getMessages", method=RequestMethod.GET)
public @ResponseBody List<Message> getMessages(HttpSession session){
JbuserDAO dao = sqlSession.getMapper(JbuserDAO.class);
List<Message> inboxList = null;
String logedinUserId = (String) session.getAttribute("loginId");
inboxList = dao.getInboxList(logedinUserId);
System.out.println(inboxList); //I do get the list here so it's not sql problem. I think.
return inboxList;
}
und das ist mein JQuery:
$(function(){
viewingInbox();
$("#viewInbox").on('click', function(){
viewingInbox();
});
});
function viewingInbox(){
$.ajax({
url: "getMessages"
, method: "GET"
, dataType: "JSON"
, contentType: "application/json; charset=UTF-8"
, success: function(obj){
alert(obj.inboxList); //I get undefined here
messageInbox(obj);
}
});
}
function messageInbox(obj){
var list = '<div>';
$(obj.inboxList).each(function(i, item){
list = list + '<article class="media">'
+ '<span class="pull-left"><input type="checkbox" class="checkboxes"></span>'
+ '<span class="pull-left thumb-sm"><img src="resources/images/a2.png" alt="..."></span>'
+ '<div class="media-body">'
+ '<div class="pull-right media-xs text-center text-muted">'
+ '<strong class="h4">12:18</strong><br></div>'
+ '<a href="#" class="h4">123'+item.sendidjbuser+'</a>'
+ '<small class="block m-t-sm">'+item.message+'</small></div></article>'
});
list = list + '</div>';
alert(list); //here I get only <div></div>
$("#inboxDiv").html(list);
alert("messageInbox end");
}
Was ich versuche zu tun ist, um gespeicherte Mitteilungen aus der DB und gibt Sie als eine Liste von Message-VO ich gemacht und dann drucken Sie Sie auf jsp.
Ich dachte, dies war der Weg, es zu tun, aber ich glaube nicht, dass ich bin immer die Liste aus dem controller. Ich versucht, indem Sie alert(message) innerhalb des each-Anweisung, und es hat nicht funktioniert; keine alert-Nachrichten. Das heißt, ich bin nicht immer die Liste aus dem controller. Bin ich etwas fehlt?
Ich jave json-databind-Abhängigkeit Hinzugefügt, aber das ist alles, was ich über json.
Ich nur gelernt, Strut2 für einen Monat und erst vor kurzem begonnen haben, mit der Quelle, so muss ich gemacht haben blöde Fehler gemacht, ich weiß nicht. Bitte sagen Sie mir, was das ist. Vielen Dank im Voraus.
- was ist
obj
? hast du die richtige obj? von controller ich glaube, Sie brauchen, um Gespräche zu json oder in der Erfolgs-callback-parse-json - Sollte die zurückgegebene inboxList von der Steuerung. Das ist, wie ich zu tun pflegte, auf Struts2. Ich denke, im Frühjahr ist es nicht wie das funktioniert. Wie mache ich das Parsen in der Erfolgs-callback oder Umwandlung in json-in-controller?
- haben Sie versucht, die
console.log(obj)
in der Erfolgs-callback - Ich wollte nicht lernen, was das ist, aber l werd versuchen, dass jetzt
- jQuery.parseJSON() zum Parsen von json in der Erfolgs-callback erhalten, wenn Sie json-Erfolgs-callback
- Ich habe diese von der Konsole.log(obj) : Array[3] 0 : Objekt Nachricht : "111" messageid : "[email protected]" reportmessageSet : Array[0] requestIdjbuser : null senddate : "2016-04-13 14:38:45" sendidjbuser : null proto : Objekt
- es ist json, die Sie wollen?
- Äh, Nein, solange ich kann das Ergebnis der jsp-ich bin glücklich mit dem, was es sein würde. Eigentlich habe ich nur angefangen zu lernen, alles das für ein wenig mehr als 6 Monate, so dass ich don T wissen, was json ist wirklich..
- keep it up man..
- Ich weiß, ich sollte lernen, die Dinge zuerst und dann tun Sie Dinge wie diese, aber ich bin gehetzt von meinen Lehrern auch.. Also ich denke, es gibt nichts, was ich hier tun kann?
- Lassen Sie uns weiter, diese Diskussion im chat.
- Lernen Sie einen debugger verwenden, anstatt sich auf die Ausgabe in der Konsole: sowohl Ihre IDE und Ihrem browser haben, dann wird es 2016.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ResponseEntity als return-element und kann auch konvertieren Sie Ihre Liste, um die json-Liste, so dass jquery kann Sie interpretieren es als iterative element.
Diese Weise werden Sie auf jeden Fall die Liste Ihrer Nachricht, wie Sie wollen. P. S: ich habe nicht durchgemacht, Ihre restlichen code. Aber Dinge, die wie folgt funktionieren sollte:
Problem gelöst. Im Gegensatz zu Struts2, ich habe nicht zu tun wie diese:
Ich denke, in Struts2 ich musste obj.inboxList, weil auf der action-Seite gibt es getter und setter.
Im Frühjahr, gibt es keine getter und setter, so vielleicht, wirklich vielleicht, weil ich bin hier nur raten, dass ist der Grund, warum gerade mit obj funktioniert:
Können Sie hinzufügen Jackson zu Ihrem classpath hinzufügen oder Abhängigkeiten zu maven und Spring Mvc konvertieren Sie Ihre Liste in json. Sie müssen nur die parameter hinzufügen, um @RequestMapping produziert="application/json", in Ihrem Fall ist es look @RequestMapping(value="getMessages", method=RequestMethod.HOLEN Sie produziert="application/json"), auch parameter erzeugt unnötig, wird aber empfohlen.
Und Sie brauchen keine edit im controller.