我正在尝试将 primefaces 自动完成方法嵌入到复合组件中。
但是,尝试访问“完成”方法时会失败。
这是我的代码:
..
<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}" />
和支持bean:
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”类没有“完整”属性。javax.el.PropertyNotFoundException:/newCarAutoComplete.xhtml @17,112 brandList="#{carController.complete}":“CarController”类没有“完整”属性。在 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) 在 org.primefaces.component.autocomplete.AutoComplete.broadcast(AutoComplete.java:340) 在 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
你能帮我么?我已经为此苦苦挣扎了好几个小时=(