2016-11-23 5 views
0

HomePage.javaJson в ListView калитку

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); 

} 

} 

От HomePage.java и homepage.html, я могу напечатать значения из массива (в HomePage.java) в таблице HTML. Из JsonTable.java, я успешно извлек JSON из базы данных, но мне нужно распечатать JSON в таблице.

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

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

Мне нужно разобрать это и дисплей, как name и id в отдельных столбцах таблицы. Как я могу отправить JSON в ListView в «HomePage.java» через «JsonTable.java» и отобразить в таблице?

Любая помощь будет оценена, спасибо заранее.

ответ

0

У вас есть два варианта:

  • Калитка на основе: разобрать JSON на стороне сервера и создать список объектов, которые должны пройти в ListView
  • JavaScript на основе: построить таблицу полностью на стороне клиента , В этом случае калитка не используется.

Update: сделать это на сервере, вы должны использовать некоторые библиотеки Java десериализации JSON, например, Джексон, GSON, ... С его помощью у вас будет List<User>, который вы можете передать в ListView, как это было в вашем примере.

+0

Thankyou .. Мне нужно Wicket Based .. Можете ли вы объяснить, подробнее .. как создать список объектов в json для перехода к ListView? – Isha

0

Чтобы создать список объектов в Json вы можете использовать массивы, массивы в JSON определяются следующим образом, в вашем случае пользователи должны быть что-то вроде этого:

[{ «Имя»: «user1», "LastName": "user1LastName"}, { "Имя": "user2", "LastName": "user2LastName"}]

с уважением,

+0

Thankyou .... Но мой json - {"schema": [{"name": "George", "id": "101"}, {"name": "David", "id": "102 "}]}. Мне нужно передать эти значения (имя и идентификатор) в ListView (в HomePage.java) для отображения в таблице. – Isha

+0

Итак, вам нужно создать следующие вещи: –

+0

ArrayList в этом объекте вы собираетесь сохранить данные из JSON; XML-макет с двумя TextView, этот XML будет представлять макет каждого объекта в ListView; Адаптер, этот адаптер вызовет созданный ранее XML и поместит информацию, сохраненную в ArrayList. Когда вы получили JSON в HomePage.java, вы должны использовать цикл для получения всех элементов массива JSON. Что-то вроде этого: JsonArray array = json.getArray («Схема»); for (int i = 0; i