2011-01-27 8 views
8

私はPrimeFacesからStar Ratingコンポーネントを利用しようとしています。ただし、パラメータを渡すことはできません。それは、私が評価したいデータベースからエンティティを取得するためのルックアップを行うことが不可能になります。私はこのようなものを試しましたが、成功しませんでした。PrimeFacesスター格付けコンポーネントにパラメータを渡しますか?

<p:rating value="#{myAction.rating}"> 
    <f:param name="myObjID" value="#{myObj.id}" /> 
</p:rating> 

私のアクションクラスにパラメータを渡すことができる別の方法はありますか?私が欲しい振る舞いを得るために欠けているものがありますか?ご協力いただきありがとうございます!

+0

私はそれが、この際に有用だ方法を確認するために失敗します特定の例。 '#{myObj.myRating} 'と'#{myObj.id}'の両方で**同じ**オブジェクトを参照しています。 '#{myObj.myRating}'は自分自身の 'id'を知りません。より現実的な例を思いついてみてください。 – BalusC

+0

電子商取引サイトでアイテムを表示すると想像してください。あなたはそれに格付けを与えたいと思っています。表示するすべての単一項目に対して新しいSeamの会話を作成する必要はないので、状態を維持し、項目IDをパラメータとして渡す必要がありますので、それに応じて評価を設定することができます。 – Shadowman

答えて

1

私は最終的にこれを行う方法を考え出した...

<h:form> 
    <p:rating value="#{myAction.rating}" /> 
    <input type="hidden" name="selectedObj" value="#{myObj.id}" /> 
</h:form> 

、私のアクションクラスで、私はselectedObjの値を取得することができますよこれを行うことで...

String selectedObjID = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("selectedObj"); 

ケーキのピース!

0

F:viewParamあなたはときrateListener方法あなたのBeanは、IDを持っているので

<f:metadata> 
    <f:viewParam name="myObjID" value="#{myObj.id}"/> 
</f:metdata> 

idは、ページの読み込み

<p:rating rateListener="#{myObj.myRating}" /> 

にこのmyobjビーンに設定されますBeanプロパティへのリクエストパラメータを渡すことができますidを使用してデータベースに格付けを保存することができます

+0

これはJSF 1.2で利用できますか?それとも2.0?私たちのアプリケーションは1.2を利用しています。 – Shadowman

0

任意のパラメータを送信できるように、f:setPropertyActionListenerをボタンに使用しようとしましたあなたはあなたの行動クラスにしたいですか?またはあなたはp:ratingの中でそれをしなければなりませんか?

または

プライベートレーティングレート;

とあなたのアクションBean内

は、あなたがこの値 にアクセスすることができ-setter

//ゲッター((UIParameter)rating.getChildren()。取得(0))。のgetValue() ;

これが当てはまる場合、JSFを使用している間はそうでないはずなので、間違っている可能性があります。その後

ちょうど私の2セント...

+0

うーん...私にとってはうまくいかないようです。どちらか、それとも正しいことをしていない。どのように設定するかの例がありますか?私はそれを正しくやっていないかもしれない。 – Shadowman

1

次のように私はそれを解決:私のバッキングBeanで

<h:form> 
    <p:rating id="rate" value="#{userHomeControllerBean.rating}"> 
     <f:param name="contentId" value="#{sharedcontent.content.id}" /> 
     <p:ajax event="rate" listener="#{userHomeControllerBean.onrate}" update="rate" /> 
     <p:ajax event="cancel" listener="#{userHomeControllerBean.oncancel}" update="rate" /> 
    </p:rating> 
</h:form> 

を、私は次のようにcontentIdの値を取得することができるよ:

Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 
int contentId = Integer.parseInt(params.get("contentId")); 
関連する問題