JSF 导航和传递参数



我在 JSF 导航和传递参数时遇到了一些问题;这是这样的场景:

三页:艺术家、专辑、曲目

对于每个页面一个 bean:ArtistBean、AlbumBean、TrackBean(会话范围)

艺术家页面

包含艺术家列表,每个艺术家姓名都是一个链接,单击它时,您可以导航到列出该艺术家专辑的专辑页面。同样,单击专辑时,您会导航到包含该专辑曲目列表的曲目页面。

链接如下所示:

Page artist: <h:commandLink action="#{albumBean.showAlbums(artist)}" value="#{artist.name}" />
Page album:  <h:commandLink action="#{trackBean.showTracks(album)}" value="#{album.name}" />

豆子如下所示:

AlbumBean: public String showAlbums(Artist artist){
              [generate list of albums, fetched by page "albums" using getAlbumList()]
              return "Albums";
           }
           public List<Album> getAlbumList(){
              return albumList;
           }
TrackBean: public String showTracks(Album album){
              [generate list of tracks, fetched by page "tracks" using getTrackList()]
              return "Tracks";
           }
           public List<Track> getTrackList(){
              return trackList;
           }

我不确定这是否是处理导航的"确定"方式;为尚未显示 Bean 的页面调用后备 bean。我也有一些奇怪的行为,主要是显示曲目的链接只有在我单击两次时才有效,而显示专辑的链接总是在单击一次时起作用。

提前感谢!

我不确定你正在做的事情是否错了。但我觉得这很复杂。在我看来,更直接的解决方案如下:

你有 3 个豆子和 3 页。显然,艺术家豆在艺术家页面中被称为,依此类推。

页面之间的导航是通过链接完成的,您可以添加一个参数。在 Album bean 上,读取传递的参数并根据该参数填写专辑列表(您可以使用名称或 id 作为键值)

曲目信息也是如此。

这样,您就不需要在会话范围内拥有 bean。最好使用视图范围。

相关内容

  • 没有找到相关文章

最新更新