Jsf Primefaces SelectOne菜单项在复合组件内禁用
我们创建了一个复合组件,其中包含primefacs selectOneMenu和一些标记。现在,我们有一个新的要求,使一些项目禁用。如何在复合组件中实现这一点?我们尝试的是: 复合组件:Jsf Primefaces SelectOne菜单项在复合组件内禁用,jsf,primefaces,composite-component,selectonemenu,Jsf,Primefaces,Composite Component,Selectonemenu,我们创建了一个复合组件,其中包含primefacs selectOneMenu和一些标记。现在,我们有一个新的要求,使一些项目禁用。如何在复合组件中实现这一点?我们尝试的是: 复合组件: <composite:interface> ... <composite:attribute name="itemDisabled" method-signature="java.lang.Boolean itemDisabled(javax.faces.model.Selec
<composite:interface>
...
<composite:attribute name="itemDisabled" method-signature="java.lang.Boolean itemDisabled(javax.faces.model.SelectItem)" />
</composite:interface>
<composite:implementation>
...
<p:selectOneMenu id="#{cc.attrs.name}">
<f:selectItems value="#{cc.attrs.selectedItems}"
var="item"
itemDisabled="#{cc.attrs.itemDisabled}" />
</p:selectOneMenu>
...
</composite:implementation>
...
...
...
视图:
豆子:
禁用公共布尔项(javax.faces.model.SelectItem){
返回true;
}
公共列表getSelectItems(){
返回selectitems的列表。。。
}
itemDisabled方法中的断点永远不会命中,并且所有项都已启用
谢谢,kopi检查一下:
这导致了javax.faces.view.facelets.TagAttributeException。itemDisabled=“#{cc.attrs.itemDisabled(item)}”非法尝试将参数传递给复合组件查找表达式(即cc.attrs.[identifier])。您似乎在传递ctagsitemDisabled
属性中的值(item),该值仅在OCComposite中可用。这是行不通的,afaikI在测试之前删除了视图中的项目param。现在我已经知道了导致上述异常的原因。
<ctags:input_selectOneMenu name="foo"
selectedItems="#{bean.selectItems}"
itemDisabled="#{bean.itemDisabled(item)}" />
public boolean itemDisabled(javax.faces.model.SelectItem item) {
return true;
}
public List<javax.faces.model.SelectItem> getSelectItems() {
return list of selectitems...
}