0

我正在尝试将 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

你能帮我么?我已经为此苦苦挣扎了好几个小时=(

4

1 回答 1

1

为什么不在@FacesComponent 中创建完整的方法?然后使用 {cc.brandList} 而不是 {cc.attrs.brandList}

于 2012-07-26T22:33:08.667 回答