2010-12-18 6 views
1

Senden der Anfrage an die Aktion mit Ajax, der Ergebnistyp ist json. Verwenden Sie ein JSON-Plugin für Struts2. Das Ergebnis ist korrekt, dauert aber sehr lange.Struts2 + jsonplugin: Antwort dauert sehr lange, um vom entfernten Server im Browser angezeigt zu werden

Im Folgenden ist der Inhalt der struts.xml:

<package name="FoodCompositionSearchajax" extends="json-default"> 
     <action name="addSearchCondition" class ="com.fmOnline.action.FmzxMenuCompositionSearchAction" enter code here 
method="addSearchCondition"> 
      <result name="success" type="json"> 
      <param name="excludeProperties"> 
    showList\[\d+\]\.foodStr,showList\[\d+\]\.nourishStr, 
    showList\[\d+\]\.searchFunction,showList\[\d+\]\.num1, 
    showList\[\d+\]\.num2,showList\[\d+\]\.danwei, 
    showList\[\d+\]\.nourishname,showList\[\d+\]\.resultmap, 
    dataList, foodList, foodStr, map, nourishList, nourishStr, 
    num1, num2, paramList, searchDes, searchFun 
    </param> 
      </result> 
    </action> 
</package> 

Die <param name="includeProperties"> nicht funktioniert, so <param name="excludeProperties"> stattdessen verwenden.

Das Ergebnis json enthält eine Liste (showList, enthält 2 String-Attribute, die Anzahl der Elemente variiert von 1 bis 6) und einen String. Ich habe den Ergebnisinhalt von dem Javascript in der Klientenseite alarmiert, und das <param name="excludeProperties"> funktioniert.

Das JSON-Ergebnis lautet: {"msg": null, "showList": [{"id": 1, "searchDes": "淀粉 中 的 蛋白质 含量> = 11"}, {"id": 2, "searchDes": "" 中 蛋白质 蛋白质 含量 => = 11 "}, {" id ": 3," searchDes ":" 禽类 中 的 蛋白质 含量> = 11 "}]}

Zuerst, Ich habe <result type="json"/> verwendet. Ich denke, die Ursache der langen Zeit könnte ein zu großes Objekt sein. Dann habe ich @JSON (serialize = false) versucht, die get-Methoden zu deserialisieren, damit diese Methoden bei der Konvertierung von java nach json nicht ausgeführt werden. Schließlich habe ich excludeProperties verwendet. Allen gelingt es, kleinere Objekte zurückzugeben, aber die Zeit nicht zu verkürzen. Die Reaktionszeit einer normalen jsp Seite ist gut

Problem:

  1. Wenn auf dem lokalen Rechner, das Projekt läuft, wird die Reaktionszeit ist kurz.

  2. Wenn auf dem Remote-Server ausgeführt wird, dauert es mehr als 10 Sekunden, bis die Antwort auf der Clientseite erfolgt. Operating Database ist wirklich schnell, es scheint, dass es lange dauert, das Ergebnis vom Server zum Browser zu senden.

  3. Wenn das Ergebnis null ist, ist die Reaktionszeit kurz, auch vom Remote-Server.

Wie kann ich die Antwortzeit verkürzen?

Antwort

0

Ich ersetze jsonplugin mit json-lib-2.3-jdk15.jar, und das Problem hat sich erledigt.Wirklich zu schätzen Ihre Hilfe ~ So glücklich jetzt O (∩_∩) O ~

0

Basierend auf den von Ihnen bereitgestellten Informationen, würde ich zuerst die JSON-Antwortgröße betrachten. Sie haben erwähnt, dass die Reaktionszeit kurz ist, wenn die Antwort null ist. Stellen Sie die AJAX-Anfrage entweder direkt im Browser oder verwenden Sie ein Debugging-Tool wie Firebug (für Firefox), um die Antwort zu sehen. Es ist möglich, dass die Antwort wirklich groß ist und dass die Verlangsamung das Java-Objekt in eine JSON-Antwort einsortiert.

Wenn die JSON-Antwort sehr groß ist und nicht alle Informationen zurückkommen müssen, ist es möglicherweise einfacher, ein Objekt zu erstellen, das nur die benötigten Felder enthält, und das dann zu marshallen.

aktualisieren

Okay, können wir die Antwort ist zu groß auszuschließen. Gibt es einen Grund, dass Sie eine so große Liste von excludeProperties haben? Vielleicht möchtest du das mal kommentieren und sehen, ob es hilft. Ansonsten, vielleicht ist es dein Server, der langsam ist?

+0

Das Json-Ergebnis ist: {"msg": null, "showList": [{"id": 1, "searchDes": "淀粉 中= 蛋白质 含量> = 11 "}, {" id ": 2," searchDes ":" 豆类 中 的 蛋白质 蛋白质 含量> = 11 "}, {" id ": 3," searchDes ":" 禽类 中 的 蛋白质 含量> = 11 "}]}. –

+0

Ich habe keine Ahnung, wie das Ergebnis so lange dauert, um es im Browser anzuzeigen. –

+0

Zuerst habe ich nur verwendet. Dann habe ich @JSON (serialize = false) versucht, die get-Methoden zu deserialisieren, damit diese Methoden bei der Konvertierung von java nach json nicht ausgeführt werden. Sie alle konnten die Zeit nicht verkürzen. Die Antwortzeit einer normalen jsp-Seite ist gut –

Verwandte Themen