2016-04-22 12 views
1

Ich analysiere JSON-Daten und kann sie zur Zeit in einem Dialogfeld anzeigen. Aber ich habe Probleme, es im Fenster anzuzeigen. Ich bin ziemlich neu bei GWT und würde mich über jede Anleitung freuen. Ich habe die entsprechenden Methoden unten angegeben.Anzeigen von geparsten JSON-Daten in einem Fenster (GWT)

private void jsonPane(String jsonText, final FlowPanel jsonSource) { 
     jsonText = jsonText.replaceAll(">", ">"); 
     Label json = new HTML("<pre>" + jsonText + "</pre>", false); 
     parseData(); 
     jsonSource.add(json); 
    } 

// Parsing the JSON Data 
    private void parseData() { 
     RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, "/jsongwtexample/greet"); 
     try { 
      requestBuilder.sendRequest(null, new RequestCallback() { 

       @Override 
       public void onResponseReceived(Request request, Response response) { 
        JSONValue jsonValue = JSONParser.parseStrict(response.getText()); 

        JSONObject weatherObject = jsonValue.isObject(); 
        JSONArray jsonArray = weatherObject.get("Weather").isArray(); 

        StringBuilder builder = new StringBuilder("** TODAYS WEATHER** \n"); 
        builder.append(jsonArray.get(0).isObject().get("Town").isString().stringValue()).append(" "); 
        builder.append(jsonArray.get(0).isObject().get("Weather").isString().stringValue()); 
        builder.append("\n"); 

        builder.toString(); 

       } 

       @Override 
       public void onError(Request request, Throwable exception) { 
        Window.alert("Some error occurred: " + exception.getMessage()); 

       } 
      }); 
     } catch (RequestException e) { 
      e.printStackTrace(); 
     } 
    } 
+1

Sie bauen auf eine 'StringBuilder', aber Sie verwenden nicht das Ergebnis von' toString() 'und Ihre' jsonPane() 'Methode wird auch nicht aufgerufen. Ich nehme an, Sie haben nicht den gesamten relevanten Code veröffentlicht. – Baz

Antwort

2

würde ich ein einfaches Etikett verwenden, anstatt ein HTML ein, bösartige HTML-Injektion zu verhindern.

private Label label = new Label(); 

können Sie das Label Stil nur angezeigt werden wie ein <pre>:

public void onModuleLoad() { 
    RootPanel.get().add(label); 
    label.getElement().getStyle().setWhiteSpace(WhiteSpace.PRE); 
} 

In Ihrem parseData() Methode Sie die Beschriftung der Text festlegen müssen:

@Override 
public void onResponseReceived(Request request, Response response) { 
    ... 

    label.setText(builder.toString()); 
} 
+0

Hallo, danke für die Antwort. Versuchen Sie, Ihre Antwort zu implementieren, aber die analysierten Daten werden nicht in das Label eingefügt. Werde es trotzdem versuchen! Vielen Dank! – eire1994