2011-07-12 8 views
1

ViewAxhtmlにバインドされたBeanAと、ViewB.xhtmlにバインドされたBeanBがあるとします。 BeanAおよびBeanBは、Beanごとに1つの属性を持つバッキングBeanです。 "Object obj;"ゲッターとセッターと一緒に。ビューからのBackingBeanのプロパティの設定(GETリクエストコンポーネントを含むアクションイベントなし)

は、今私はViewAに次のようにやっている:これは素晴らしい作品

<ui:repeat value="#{someOtherBean.listOfObjects}" var="objSelected"> 
    <h:commandLink value="someValue" action="ViewB"> 
     <f:setPropertyActionListener target="#{beanB.obj}" value="#{objSelected}" /> 
    </h:commandLink> 
</ui:repeat> 

!私はリストを反復し、(commandLinkを介して)クリックしたオブジェクトはBeanBに設定されます。

問題:GETリクエストで作業する必要があるため、h:linkまたはh:outputLink(btw、違いはどこですか?)を使用しています。しかし、私はf:setPropertyActionListenerコンポーネントを使用することはできません。なぜならGETリクエストはアクションイベントを発生させないからです。

アクションイベントがないので、私はGETリクエストを使用しなければならないので、BeanBにオブジェクトのIDをパラメータとして渡す必要があります。次に、BeanBはdaoを使用して、指定されたIDを持つオブジェクトを取得します。しかし、このsux。私はDAOを使いたくない。だから私の具体的な質問:

GET要求リンクのためのf:setPropertyActionListenerとは何か? h:linkまたはh:outputLinkコンポーネントをクリックすると、BackingBeanのプロパティを設定するにはどうすればよいですか?

解決策がありますようお願い申し上げます。

答えて

1

リクエストパラメータとして渡します。リクエストパラメータは文字列のみにすることができるので、文字列を最初に変換する必要があります(または、問題のオブジェクトを一意に識別する最小の可能性のある部分)。

<ui:repeat value="#{someOtherBean.listOfObjects}" var="objSelected"> 
    <h:link outcome="ViewB"> 
     <f:param name="id" value="#{objSelected.id}" /> 
    </h:link> 
</ui:repeat> 

そしてBeanB追加で:

@ManagedProperty("#{param.id}") 
private Long id; 
private SomeObject objSelected; 

@PostConstruct 
public void init { 
    objSelected = objService.find(id); 
} 

// ... 
+0

おかげBalusC

はここで、このためのオブジェクトの(データベース)の識別子を使用した例です。私は自分のdao(あなたの場合はobjService)を使用してIDパラメータで識別されるデータベースからオブジェクトを取得することを避けたかったのです。しかし、あなたがこれを書いて以来、私は他の解決策はないと思う。 f:setPropertyActionListenerを使用してプロパティを設定することは、素晴らしいことです。本当に悲しいことに、h:linkコンポーネントではうまくいきません。とにかくありがとう。私は評判が十分でないので、「投票アップ」はできません。しかし、私は後でそれを行うでしょう。 – mosk

+0

ビジネス要件でGETを使用する必要があるため、悲しい/悪いことはわかりません。データはリクエストURLを通して渡されなければなりません。何かを非難する必要がある場合は、ビジネス要件を責めます。 – BalusC

+0

私の場合、DAOを使用してデータベースにアクセスすると、DAOによってConcurrentModificationExceptionsが発生するため、悲しいです。しかし、私はこれを解決しようとする代わりに解決しなければならない別の問題だと思います。どうもありがとう。有名なBalusCがソフの私の最初の投稿に答えてくれたことをうれしく思います。あなたのブログは私をたくさん助けました;)thxこれまでのところ。 – mosk

関連する問題