2011-10-26 13 views
2

私は2つのxhtmlページと2つのマネージドBeanを持っています。最初のページJSF - ページにリダイレクトし、検索用のパラメータIDを記憶する

私は(データベーステーブルからレコードを - 2番目の列には、<h:commandLink>タグを含む)トピックのリストを持っている:

enter image description here

減少したコードの一部:

<rich:column><h:outputText value="#{item.id}"/></rich:column> 
<rich:column><h:outputText value="#{item.createdBy}"/></rich:column> 
<rich:column> 
    <h:commandLink value="#{item.topic}" action="#{myTools.setMenuItem('posts')}"/> 
</rich:column> 

私はaction="#{myTools.setMenuItem('posts')}"を使ってページposts.xhtmlにリダイレクトしてください。 パラメータ"#{item.id}"を渡すと、特定のIDを持つトピックへのすべての投稿を見つけることができますか? (のDataModelを使用して)

UPDATE: これは、方法かもしれない:

<h:commandLink value="#{item.topic}" action="#{myTopic.submit}"> 

public String submit() 
{ 
    topic = model.getRowData(); 
    return "/posts.xhtml?faces-redirect=true&id=" + topic.getId(); 
} 

しかし、私はまだ別のBean(MyPosts)にtopic.getId()パラメータを渡す方法を知っているドント..?

答えて

4

そのまま渡します。

など。

public String navigate(String menuItem, Long id) { 
    this.menuItem = menuItem; 
    return menuItem + "?faces-redirect=true&id=" + id; 
} 

豆と

<h:commandLink value="#{item.topic}" action="#{myTools.navigate('posts', item.id)}"/> 

は、セッションスコープにする必要はないはずはありません。ビューのスコープは問題ありません。そうしないと、エンドユーザは、複数のブラウザのタブ/ウィンドウで同じページとやりとりするとき、直感的ではない動作に直面します。

+0

BalusCさん、ありがとう、私は同様のことを試しましたが、 'menuItem +"を使ってリダイレクトすると?faces-redirect = true&id = "+ id ; '、私はBean MyPostsでパラメータ' id'を使う方法を知らない。 – gaffcz

+0

ターゲットビーン 'MyPosts'のターゲットビュー' posts.xhtml'または '@ManagedProperty'に' 'を使用します。 http://stackoverflow.com/questions/4888942/viewparam-vs-managedpropertyvalue-param-id – BalusC

+0

もう一度ありがとう、それは本当に動作します! – gaffcz

2

あなたは使用することができます:あなたのcommandLink内部

<f:setPropertyActionListener target="#{propertyToSet}" value="#{item.id}" />

を。

+0

ありがとう、カイカイ、本当にうまくいきます!そして、MyPostsはViewScopedではなくSessionScopedでなければなりません。 – gaffcz

1

送信する前に非表示フィールドを追加してそのフィールドにIDを格納し(このフィールドをJavaScriptで使用する)、この非表示フィールドをBean内の変数にバインドできます。

<h:inputHidden id="selectedId" value="#{beakbean.selectedId}"> 

<h:commandLink value="#{item.topic}" onclick="updateSelectedId()" action="#{myTools.setMenuItem('posts')}"/> 

function updateSelectedId(){ 
    //put the selected id in the field selectedId 
} 
+0

ありがとう、medopal :) – gaffcz

関連する問題