2012-03-06 28 views
0

私は以下の問題があります。「リストページ」から詳細ページにリダイレクトする必要がありますが、リストからIDが必要です。この例の「レコード」は、rich:dataTableのvar属性です。まず第一に、私はこのことについて考えた:a4j:commandLinkを正しくパラメータ化する方法は?

<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&amp;cusid=#{record.id}" /> 

をしかし、これは無効な構文ですので、私はこのような何か試してみました:

<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true"> 
<f:attribute name="cusid" value="#{record.id}"/> 
</a4j:commandLink> 

(私も試したF:PARAM) 私が試したターゲットページを...と値を受信する

<f:metadata> 
<f:viewParam required="false" name="cusid" value="#{customerBean.editCustomer}"/> 
</f:metadata> 

基本的にはF:メタデータの作品、私は、次のハードコードされたパラメータでそれをしようとしたとき、私はその値を受け取るため:

<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&amp;cusid=120" /> 

私は解決策を見つけたが、私はこれが正しい方法であるかどうかわからないんだけど:customerBeanで

私は次のことを行います。

public String editCustomer(long customerId) 
{ 

    edit(customerId); 
    return "/customerDetails?faces-redirect=true"; 
} 

しかし、私はないと思いますRich Facesでパラメータを送受信する通常の方法です。多分もっと良い解決策はありますか?

答えて

1

<a4j:commandLink>は、通常のGETリクエストが必要な間にajax POSTリクエストを送信します。代わりに<h:link>を使用してください。

<h:link value="show details" outcome="/customerDetails?cusid=120" /> 
+0

これは基本的に、EL式をパラメータとして使用しても動作するようですが、いくつかの奇妙な動作があります。 customersDetailでは、上記のようにf:metadata属性でparamを取得しようとします。そのリンクをクリックして初めて詳細ページにリダイレクトすると、メタデータプロパティメソッドは実行されません。リストページに戻ってもう一度やり直すと、突然動作します。私は何が間違っているのか分からない。 – Bevor

+0

キャッシュ問題のように聞こえます。ブラウザのキャッシュを消去し、サーバーを再起動します。 – BalusC

+0

これは別の問題と関連していると思います。しかし、とにかく、これは私の質問の範囲外です。 – Bevor

0

これを行う最良の方法があります。提供された例は2つのパラメータを渡します。複数あることができます。 assignTo属性とvalue属性を使用するだけです。希望があなたの質問に答えることを望みます。

<a4j:commandLink action="#{myBackingBean.myAction}"> 
    <a4j:param name="jobIdParam" value="#{job.jobNumber}" 
     assignTo="#{myBackingBean.jobId}" /> 
    <a4j:param name="isDisplayedParam" value="true" 
     assignTo="#{myBackingBean.displayed}"/> 
</a4j:commandLink> 
関連する問題