gpt4 book ai didi

java - 使 ListView 项目可点击

转载 作者:行者123 更新时间:2023-12-02 00:20:44 25 4
gpt4 key购买 nike

我想让 ListView 的项目(即表格单元格)可单击,以便它们发送到另一个页面。谁能让我知道我的问题是什么?提前致谢。

这就是 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)

关于java - 使 ListView 项目可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11058099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com