Java 使列表视图项可单击
我想让列表视图的项目,即表格单元格,可点击,以便他们将发送到另一个页面。有人能告诉我这里有什么问题吗?提前谢谢 这就是html: 这就是我要尝试的Java 使列表视图项可单击,java,listview,wicket,listviewitem,wicket-1.5,Java,Listview,Wicket,Listviewitem,Wicket 1.5,我想让列表视图的项目,即表格单元格,可点击,以便他们将发送到另一个页面。有人能告诉我这里有什么问题吗?提前谢谢 这就是html: 这就是我要尝试的 Application app = (Application) getApplication(); MovieCollection col = app.getCollection(); List<Movie> movies = col.getMovies(); add(new ListView("movi
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));
}
});
}
});
正如所评论的,这是因为您的层次结构在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)如注释所示,发生这种情况是因为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\u link”的子级,但发现它是ListItem的子级(0表示ListView子级的索引…ListItems)看起来html和java中的层次结构不匹配。在Java中,您向项目(元素)添加标题和年份,但在html中它位于元素内部。你应该在链接对象中添加java中的标题和年份。按照你说的解决了这个问题,我对层次结构不太了解,我是网络新手,非常感谢。看起来html和java中的层次结构不匹配。在Java中,您向项目(元素)添加标题和年份,但在html中它位于元素内部。你应该在Link对象中添加title和year,用java语言。照你说的做已经解决了这个问题,我对层次结构不太了解,我是网络新手,非常感谢。+1指出了如何使用异常中的信息来解决这个问题。你给了OP一根鱼竿和一条鱼+1用于指出如何使用异常中的信息来解决问题。你给了OP一根鱼竿和一条鱼