2009-05-15 2 views
1

の状況です:豊かでELがなぜかっこの間にパラメータとして間違ったオブジェクトを与えるのですか?ここで

:a4jでのdataTable:フォーム、私はa4jを作成:のcommandLinkは、値を選択し、Beanにそれを渡すためにJBoss ELアクションの構文で

action="#{bean.myaction(myparameter)}" 

これは問題なく動作します。

しかし、フォームを再描画して、ajax呼び出しでデータテーブルをフィルタリングすると、値を選択すると、誤った結果が表示されます。選択範囲のインデックスではなく、フィルタリング前のデータです。

アイデア?

私はわずか5分で私に適切なソリューションを与えるためにザックありがとうございました。

括弧間のアクションのパラメータを渡す方がよりエレガントですが、これはうまくいきます。 :)

ありがとうございました。

p.s.私もタイトルを編集しています。

答えて

2

は、使用してみてください。そして、

<a4j:commandLink action="#{bean.myaction}"> 
    <f:param name="myparameter" value="paramValue" /> 
</a4j:commandLink> 

FacesContextを通じてrequestParameter("myparameter")を経由して、あなたの行動でそのパラメータにアクセスします。

これはjboss ELではなく、統一表現言語(EL)です。これは、Sunによって指定されたJSP/JSFの一般的な機能です。

2

ザックの答えに加えて、私はあなたのパラメータを持つメソッドを呼び出す機能を持つためにEL式を拡張する必要がある場合、あなたはEL Functorsライブラリを使用することができることを言う:

action="#{bean.myaction$[myparameter].action}" 
+0

彼はJBoss ELを使用しています。あなたは#{bean.myaction(myparameter)}をうまくいくことができます。 – Damo

+0

私はJBoss ELを使ったことはありませんでした。 – romaintaz

0

です@DataModelで注釈を付けられたコレクションを使用してデータテーブルを作成しますか?その場合は、再要求されるようにフィルタリングする際にコンテキストから削除してみてください。

例えば、

//In filter method 
Contexts.removeFromAllContexts("yourDataModelCollection"); 
+0

ありがとうございますが、私はデータモデルを使用していません。私はシームエンティティクエリフレームワークを使用しています。 –

0

<a4j:region>のdataTableを私のために働かせました。これにより、JBoss ELパラメータを引き続き使用できます。

関連する問題