簡體   English   中英

使列表視圖項目可點擊

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM