将解析的 JSON 数据显示到窗格中 (GWT)
Displaying parsed JSON data into a pane (GWT)
我正在解析 JSON 数据,目前它可以显示在对话框中。但我无法在窗格中显示它。我是 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();
}
}
我会使用普通标签,而不是 HTML 标签,以防止恶意 HTML 注入。
private Label label = new Label();
您可以设置标签的样式以使其像 <pre>
一样显示:
public void onModuleLoad() {
RootPanel.get().add(label);
label.getElement().getStyle().setWhiteSpace(WhiteSpace.PRE);
}
在您的 parseData()
方法中,您需要设置标签的文本:
@Override
public void onResponseReceived(Request request, Response response) {
...
label.setText(builder.toString());
}
我正在解析 JSON 数据,目前它可以显示在对话框中。但我无法在窗格中显示它。我是 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();
}
}
我会使用普通标签,而不是 HTML 标签,以防止恶意 HTML 注入。
private Label label = new Label();
您可以设置标签的样式以使其像 <pre>
一样显示:
public void onModuleLoad() {
RootPanel.get().add(label);
label.getElement().getStyle().setWhiteSpace(WhiteSpace.PRE);
}
在您的 parseData()
方法中,您需要设置标签的文本:
@Override
public void onResponseReceived(Request request, Response response) {
...
label.setText(builder.toString());
}