2016-11-23 3 views
0

HomePage.javaJSONリストビュー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); 

} 

} 

HomePage.javaとHomePage.htmlから、私はすることができる午前HTMLテーブルのArray(HomePage.java内)の値を出力します。 JsonTable.javaから、データベースからJSONを正常に取得しましたが、JSONをテーブルに出力する必要があります。

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

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

は、私は、テーブル内の別の列にnameidとしてこれとディスプレイを解析する必要があります。 JSONを "HomePage.java"〜 "JsonTable.java"のListViewに送信してテーブルに表示するにはどうすればよいですか?

ご協力いただきますようお願い申し上げます。ありがとうございます。

答えて

0

は、2つのオプションがあります。

  • Wicketのベース:サーバー側でJSONを解析し、リストビュー
  • JavaScriptをベースに渡す必要があるオブジェクトのリストを作成:テーブルを構築し、完全にクライアント側を。この場合、Wicketは使用されません。

更新:例えば、あなたはJSONをデシリアライズするためにいくつかのJavaライブラリを使用する必要があり、サーバーでそれを行うにはJackson、GSON、...その助けを借りてList<User>あなたの例で行ったようにListViewに渡すことができます。 「USER1」、:

[{「firstNameの」:

+0

ありがとう..私はあなたに説明していただけます。.. Wicketのベースを必要とします詳細..どのようにListViewに渡すjsonのオブジェクトのリストを作成するには? – Isha

0

はJSONあなたは配列を使用することができます内のオブジェクトのリストを作成するには、JSON内の配列は次のようなものである必要があり、ユーザーのあなたの場合には、以下のように定義されています"lastNameの": "user1LastName"}、{ "firstNameの": "USER2"、 "lastNameの": "user2LastName"}]

よろしく、

+0

ありがとうございます....しかし私のjsonは - {"schema":[{"name": "George"、 "id": "101"}、{"name": "David"、 "id": "102" "}]}。テーブルに表示するには、これらの値(名前とID)をListView(HomePage.java内)に渡す必要があります。 – Isha

+0

これで、次のものを作成する必要があります。 –

+0

このオブジェクトのArrayList は、JSONからデータを保存します。 2つのTextViewを持つXMLレイアウトでは、このXMLはListView内の各オブジェクトのレイアウトを表します。アダプタでは、このアダプタは以前に作成したXMLを呼び出して、ArrayListに保存されている情報を配置します。 HomePage.javaでJSONを受け取ったら、JSON配列のすべての要素を取得するためにループを使用する必要があります。このようなもので:JsonArray array = json.getArray( "Schema"); for(int i = 0; i