shokosブログ

プログラミング

交換コード

ともくんとお互いが作ったwickettwitterコードを交換して、

それにTLを表示させるよう改良させるっていう課題ができましたー!

ID,Password,ひとことを入力して、投稿するか確認するpage

public ConfirmPage(PostingData data) {
	Label confirmId = new Label("confirmId", data.getUserId());
	Label confirmSb = new Label("confirmSb", data.getSubject());
	SubmitLink submitlink = new SubmitLink("submitLink", data);
	Twitter twitter = new Twitter(data.getUserId(), data.getPassword());
	List<Status> tlList = null;
	FriendTimeLineViewer viewer = null;
	try {
		tlList = twitter.getFriendsTimeline();
	} catch (TwitterException e) {
	}
	viewer = new FriendTimeLineViewer("tiList", tlList);
	add(confirmId, confirmSb, submitlink, viewer);
}

getFriendsTimeline()すると情報がめいっぱい入ったStatusが送られてきます。
今まではモデルに橋渡ししてもらう情報を格納するクラスを自分で作っていたのだけど、
Statusがあるのでその必要はありません。



FriendTimeLineViewerのクラス

public class FriendTimeLineViewer extends ListView<Status> {

	private static final long serialVersionUID = 1L;

	public FriendTimeLineViewer(String id, List<? extends Status> list) {
		super(id, list);
	}

	@Override
	protected void populateItem(ListItem<Status> item) {
		Status status = item.getModelObject();
		User user = status.getUser();
		item.add(new Label("screenName", new PropertyModel<User>(user,
				"screenName")));
		item.add(new Label("text", new PropertyModel<Status>(status, "text")));
	}

}


まず1行目
ジェネリクスがStatusのListViewを継承しているので、子クラスにジェネリクスを書く必要はない

次にpopulateItemのメソッドの部分
このメソッドは繰り返しされたときに呼ばれる

Statusの中にtlのひとことが入っているので、それをPropertyModelに取ってきてもらっています。



@shokosのshokos的なものはStatusの中に直接は入っていません。
Statusのフィールドuserの中に入っています。

さらにその中にはまためいっぱい情報が入っています。
shokos的なものはここにscreenNameというフィールド名で入っています。
それをPropertyModelに取ってきてもらっています。



ブログに行番号が入ればもっとアウトプットしやすいのにな