[英]Making list view items clickable
我想使列表視圖的項目(即表格單元格)可單擊,以便它們可以發送到另一頁。 誰能讓我知道我的問題在這里嗎? 提前致謝。
就是html: http : //pastebin.com/qUaPzTwv
那就是我要的
Application app = (Application) getApplication();
MovieCollection col = app.getCollection();
List<Movie> movies = col.getMovies();
add(new ListView("movie_list", movies) {
@Override
protected void populateItem(ListItem item) {
final Movie movie = (Movie) item.getModelObject();
item.add(new Label("title", movie.getTitle()));
item.add(new Label("year", Integer.toString(movie.getYear())));
item.add(new Link("movie_link") {
@Override
public void onClick() {
setResponsePage(new MoviePage(movie));
}
});
}
});
這就是輸出:
Last cause: Unable to find component with id 'title' in [ [Component id = movie_link]]
Expected: 'movie_list:0:movie_link.title'.
Found with similar names: 'movie_list:0:title', movie_list:1:title', movie_list:2:title'
如前所述,發生這種情況是因為html和java之間的層次結構不匹配,這意味着,如果您有一個wicket:id元素,而其子元素帶有wicket:id子元素,則必須將子代添加到其父代中。 最終,這就是您頁面的工作方式:該頁面不過是帶有子組件的組件,這就是ListView的工作方式。
add(new ListView("movie_list", movies) {
@Override
protected void populateItem(ListItem item) {
final Movie movie = (Movie) item.getModelObject();
Link link = new Link("movie_link") {
@Override
public void onClick() {
setResponsePage(new MoviePage(movie));
}
};
item.add(link);
link.add(new Label("year", Integer.toString(movie.getYear())));
link.add(new Label("year", Integer.toString(movie.getYear())));
}
});
您收到的錯誤為您提供了問題的答案。 它為您提供了組件路徑,該路徑是從組件返回頁面的wicket:id的列表。 在這種情況下,它告訴您它希望“ title”是“ movie_link”的子代,但發現它是ListItem的子代(“ 0”表示ListView子代的索引... ListItems)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.