2012-06-04 2 views
0

JSF 탐색 및 전달 매개 변수에 문제가 있습니다. , 아티스트, 앨범 페이지마다 빈을JSF 탐색 및 전달 매개 변수

을 추적 :

세 페이지 :이 시나리오입니다 ArtistBean, AlbumBean, TrackBean은 (세션 범위)

는 아티스트 페이지 예술가의 목록을 포함, 각 artistname은 링크이고 클릭하면 해당 아티스트의 앨범 목록이있는 앨범 페이지로 이동합니다. 마찬가지로 앨범을 클릭하면 해당 앨범의 트랙 목록이있는 트랙 페이지로 이동합니다. 다음과 같이

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

내가이 네비게이션을 처리 할 수있는 "OK"방법이 있는지 확실하지 않습니다; 아직 bean이 표시되지 않은 페이지에 대해 backing bean을 호출합니다. 또한 이상한 행동을 보입니다. 주로 트랙을 표시하는 링크는 두 번 클릭하면 작동하지만 앨범을 표시하는 링크는 단지 한 번 클릭 할 때 작동합니다.

미리 감사드립니다.

+0

구체적으로 묻는 것이 확실하지 않습니다. 기본적으로 "여기 내 코드가 맞습니까?"라고 묻습니다. 이것은 비 건설적인 질문이므로 스택 오버플로에 대한 논점이 아니며 일반 토론 포럼에서 더 적합합니다. 더블 클릭 문제 (실제 문제로 보이는 것)에 관해서는 http://stackoverflow.com/questions/2118656/hcommandlink-hcommandbutton-is-not-being-invoked의 포인트 7을 읽으십시오. – BalusC

+0

제 이유 그것이 "내비게이션을 처리하는 좋은 방법"인지에 대해 물어보기 위해 내 링크가 예상대로 작동하지 않는다는 사실에 연결되어 있습니다. 나는 그것을 분명히하기 위해 다르게 표현해야했습니다. 그래도 여전히 질문입니다. 다른 빈에 매개 변수를 전달하는 방법이 건전한 것인지 아니면 문제가 생길 수 있는지 알고 싶습니다. – nivis

+0

시행 착오를 거친 후에 양식 메시지를 설정하는 데 사용한 요청 범위 Bean에 양식 바인딩을 제거 할 때 작동하도록했습니다. 그게 왜 그 문제를 일으켰는지 나는 모른다. – nivis

답변

1

내가하는 일이 잘못되었는지 확실하지 않습니다. 그러나 나는 그것이 복잡하다는 것을 안다. 좀 더 간단한 해결책은 다음과 같습니다.

3 개의 콩과 3 개의 페이지가 있습니다. 분명히 아티스트 빈은 아티스트 페이지에서 호출됩니다.

페이지 간 이동은 링크를 통해 이루어지며 매개 변수를 추가합니다. 앨범 Bean에서 전달 된 매개 변수를 읽고 해당 매개 변수를 기반으로 앨범 목록을 채 웁니다 (이름 또는 ID를 키 값으로 사용할 수 있음)

트랙 정보는 동일합니다.

그런 식으로 콩을 세션 범위에 둘 필요가 없습니다. 뷰 범위를 사용하는 것이 더 좋습니다.

+0

f : param과 h : link를 사용하여 제안서에 따라 변경되어 작동합니다. 감사! – nivis