[英]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.