【问题标题】:JSF navigation and passing parametersJSF 导航和传递参数
【发布时间】:2012-06-08 15:55:36
【问题描述】:

我在 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}" />

bean 如下所示:

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;
           }

我不确定这是否是处理导航的“OK”方式;为尚未显示 bean 的页面调用支持 bean。我也遇到了一些奇怪的行为,主要是显示曲目的链接仅在我单击两次时才有效,而显示专辑的链接仅在单击一次时才有效。

提前致谢!

【问题讨论】:

  • 我不确定您具体要问什么。您基本上是在问“这是我的代码,可以吗?”这是一个非建设性的问题,因此与 Stack Overflow 无关,更适合通用讨论论坛。至于您的双击问题(似乎是您真正的具体问题),请阅读stackoverflow.com/questions/2118656/… 的第 7 点
  • 我询问它是否是“处理导航的好方法”的原因与我的链接没有按预期工作有关。我应该用不同的措辞来说明这一点。但这仍然是一个问题,我很想知道将参数传递给另一个 bean 的方式是否合理,或者是否会给我带来问题。
  • 经过大量的反复试验后,当我将表单绑定删除到用于设置表单消息的请求范围 bean 时,我得到了它的工作。我不知道为什么会导致问题。

标签: jsf navigation javabeans communication


【解决方案1】:

我不确定您的操作是否有误。但我觉得很复杂。在我看来,更直接的解决方案如下:

你有 3 个 bean 和 3 个页面。显然,艺术家 bean 在艺术家页面等中被调用。

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

曲目信息也是如此。

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

【讨论】:

  • 我根据您的建议使用 h:link 和 f:param 进行了更改,它可以工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
相关资源
最近更新 更多