複合コンポーネント内に primefaces autocomplete メソッドを埋め込もうとしています。
ただし、「complete」メソッドにアクセスしようとすると失敗します。
これが私のコードです:
..
<composite:interface>
<composite:attribute name="car" required="true" />
<composite:attribute name="brandList" required="true" method-signature="java.util.List complete(java.lang.String)" />
<composite:attribute name="style" required="false" />
</composite:interface>
<composite:implementation>
..
<h:outputLabel value="DropDown :" for="dd" />
<p:autoComplete id="dd" dropdown="true" value="#{cc.attrs.car.brand}" completeMethod="#{cc.attrs.brandList}" />
..
</composite:implementation>
そして呼び出し:
<cp:carPropertiesAutoComplete car="#{carController.car}" brandList="#carController.complete}" />
そしてバッキングビーン:
public List<String> complete(String query) {
List<String> brandList = new ArrayList<String>();
brandList.add("brand0");
brandList.add("brand1");
for (String brand : brandList) {
if(brand.contains(query)) {
brandList.add(brand);
}
}
return brandList;
}
そしてログ:
警告: /newCarAutoComplete.xhtml @17,112 brandList="#{carController.complete}": クラス 'CarController' にはプロパティ 'complete' がありません。javax.el.PropertyNotFoundException: /newCarAutoComplete.xhtml @17,112 brandList="#{carController.complete}": クラス「CarController」にはプロパティ「complete」がありません。com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111) で com.sun.faces.facelets.el.ContextualCompositeMethodExpression.invoke(ContextualCompositeMethodExpression.java:190) で com.sun.faces.facelets .tag.TagAttributeImpl$AttributeLookupMethodExpression.invoke(TagAttributeImpl.java:450) at org.primefaces.component.autocomplete.AutoComplete.broadcast(AutoComplete.java:340) at javax.faces.component.UIViewRoot.
私はググってこれを見つけました(解決策のない同じ問題) http://forum.primefaces.org/viewtopic.php?f=3&t=1884
Mojarra 2.1.6 および PrimeFaces 3.3.1 で Glassfish サーバー 3.1.2 を実行しています。
手伝ってくれませんか?私はこれに何時間も苦労しました =(