2016-11-23 2 views
0

HomePage.javaJson in Listview WICKET

public class HomePage extends WebPage { 

private static final long serialVersionUID = 1L; 

public HomePage() 
{ 

    new JsonTable("table"); //prints json from database in console- {"schema":[{"name":"George","id":"101"},{"name":"David","id":"102"}]} 

    //get JSON here and display it in ListView 
    List userList = Arrays.asList(
      new User[] { 
       new User("FirstA", "LastA"), 
       new User("FirstB", "LastB"), 
       new User("FirstC", "LastC") 
       }); 

    add(new ListView("listview", userList) { 
     protected void populateItem(ListItem item) { 
      User user = (User) item.getModelObject(); 
      item.add(new Label("firstname", user.getFirstname())); 
      item.add(new Label("lastname", user.getLastname())); 
     } 
    }); 

} 
} 

public class User { 

String _first, _last; 

public User(String _first, String _last) { 
    this._first = _first; 
    this._last = _last; 
} 

public String getFirstname() { return _first; } 
public String getLastname() { return _last; } 
} 

homepage.html

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
</head> 
<body> 
<div class="panel panel-default"> 

<div class="panel-heading">Heading</div> 
<table class="table"> 
<tr wicket:id="listview"> 
<td><span wicket:id="firstname"></span></td> 
<td><span wicket:id="lastname"></span></td> 
</tr> 
</table> 
</div> 
</body> 
</html>  

JsonTable.java

public class JsonTable extends BasePage { 

public JsonTable(String id) { 
    System.out.println("In Constructor"); 

    String query="select row_to_json(t) from " 
      + "(select array_to_json(array_agg(row_to_json(t))) as schema from (select name, type from sample) t) t"; 
    //System.out.println(query); 
    JsonToWidget widget=new JsonToWidget(); 
    //System.out.println(widget); 
    JSONObject json=widget.getJsonForTableContent(query); 
    System.out.println(json); 

} 

} 

Von HomePage.java und homepage.html, ich bin in der Lage zu Werte aus Array (in HomePage.java) in der HTML-Tabelle ausgeben. Von JsonTable.java, habe ich erfolgreich JSON aus der Datenbank abgerufen, aber ich muss den JSON in einer Tabelle drucken.

new JsonTable("table"); //in HomePage.java ,prints json in console - 

{"schema":[{"name":"George","id":"101"},{"name":"David","id":"102"}]} 

Ich brauche dies und Display als name und id in separaten Spalten in der Tabelle zu analysieren. Wie kann ich JSON in "HomePage.java" über "JsonTable.java" an ListView senden und in der Tabelle anzeigen?

Jede Hilfe wäre willkommen, danke im Voraus.

Antwort

0

Sie haben zwei Möglichkeiten:

  • Wicket basiert: die JSON auf der Serverseite analysieren und eine Liste der Objekte erstellen, die Sie Listview
  • JavaScript basiert passieren sollte: bauen die Tabelle komplett clientseitige . Wicket wird in diesem Fall nicht verwendet.

aktualisieren: es auf dem Server zu tun, sollten Sie einige Java-Bibliothek verwenden, um die JSON deserialisieren, z.B. Jackson, GSON, ... Mit seiner Hilfe haben Sie eine List<User>, die Sie wie in Ihrem Beispiel an die ListView übergeben können.

+0

Danke .. ich brauche Wicket Based .. können Sie mir bitte erklären, in detail..wie erstellt man eine Liste von Objekten in json, die an ListView übergeben werden? – Isha

0

Um eine Liste von Objekten in Json erstellen Sie Arrays, Arrays in JSON sind wie folgt definiert, in Ihrem Fall der Nutzer sollte wie folgt sein können:

[{ „firstname“: „user1“, "nachName": "user1LastName"}, { "firstname": "user2", "lastname": "user2LastName"}]

Grüße,

+0

Danke .... Aber mein JSON ist - {"Schema": [{"name": "George", "id": "101"}, {"name": "David", "id": "102 "}]}. Ich muss diese Werte (Name und ID) an ListView (in HomePage.java) übergeben, um in der Tabelle anzuzeigen. – Isha

+0

Ok, dann müssen Sie folgende Dinge erstellen: –

+0

Eine ArrayList in diesem Objekt werden Sie die Daten aus dem JSON speichern; Ein XML-Layout mit zwei TextView, dieses XML repräsentiert das Layout jedes Objekts in der ListView; Ein Adapter, dieser Adapter ruft das XML auf, das Sie zuvor erstellt haben, und speichert die Informationen, die in der ArrayList gespeichert sind. Wenn Sie den JSON in HomePage.java erhalten haben, müssen Sie eine Schleife verwenden, um alle Elemente des JSON-Arrays zu erhalten. Mit etwas wie diesem: JsonArray array = json.getArray ("Schema"); für (int i = 0; i