私は以下の問題があります。「リストページ」から詳細ページにリダイレクトする必要がありますが、リストからIDが必要です。この例の「レコード」は、rich:dataTableのvar属性です。まず第一に、私はこのことについて考えた:a4j:commandLinkを正しくパラメータ化する方法は?
<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&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&cusid=120" />
私は解決策を見つけたが、私はこれが正しい方法であるかどうかわからないんだけど:customerBeanで
私は次のことを行います。
public String editCustomer(long customerId)
{
edit(customerId);
return "/customerDetails?faces-redirect=true";
}
しかし、私はないと思いますRich Facesでパラメータを送受信する通常の方法です。多分もっと良い解決策はありますか?
これは基本的に、EL式をパラメータとして使用しても動作するようですが、いくつかの奇妙な動作があります。 customersDetailでは、上記のようにf:metadata属性でparamを取得しようとします。そのリンクをクリックして初めて詳細ページにリダイレクトすると、メタデータプロパティメソッドは実行されません。リストページに戻ってもう一度やり直すと、突然動作します。私は何が間違っているのか分からない。 – Bevor
キャッシュ問題のように聞こえます。ブラウザのキャッシュを消去し、サーバーを再起動します。 – BalusC
これは別の問題と関連していると思います。しかし、とにかく、これは私の質問の範囲外です。 – Bevor