JSFナビゲーションとパラメータの受け渡しに問題があります。これはシナリオです:
3ページ:アーティスト、アルバム、トラック
各ページの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を呼び出します。また、奇妙な動作もあります。主に、トラックを表示するためのリンクは2回クリックした場合にのみ機能しますが、アルバムを表示するためのリンクは1回クリックするだけで常に機能します。
前もって感謝します!