私のプロジェクトの検索フォームにPrimeFaces p:autoComplete
ウィジェットを使用しています。ユーザーは、含める必要のあるフォーム要素数(検索パラメータ)をいくつでも選択することができます。そのため、それぞれにIDをcompleteMethod
に渡す必要があります。私はonfocus=".."
を追加してオブジェクトをBeanに渡そうとしましたが、要素が最初にロードされたときにのみ起動されます。p:autoCompleteのcompleteMethodへのパラメータの受け渡し
私の質問:どのように属性をcompleteMethod
に渡すことができますか?要素(シンプル)の
XHTML:
<p:autoComplete value="#{filter.value}" label="dynamic search attribute"
completeMethod="#{myBean.complete}" />
豆(シンプル):理論的には
@Named("myBean")
public class MyController implements Serializable {
public List<String> complete(String query) {
List<String> results = new ArrayList<String>();
// ... code
return results;
}
}
これは完璧なソリューションのように思える:
<p:autoComplete value="#{filter.value}" label="dynamic search attribute"
completeMethod="#{myBean.complete(filter)}" />
そして、再び豆:
あなたは、public List<String> complete(String query) {
FacesContext context = FacesContext.getCurrentInstance();
FilterObject o = (FilterObject) UIComponent.getCurrentComponent(context).getAttributes().get("filter");
// ...
}
また、その#{filter}
はELスコープにすでにあることを、あなたの場合に表示されている:
私は両方の提案sollutionsを試してみましたが、彼らの両方が魅力のように働きました。私は2番目のアプローチを選んだので、属性は必要ありません。どうもありがとう! –
ようこそ。私はあなたにもうまくいくかもしれない '@ Inject'提案を追加しました。 – BalusC