Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Primefaces SelectOne菜单项在复合组件内禁用_Jsf_Primefaces_Composite Component_Selectonemenu - Fatal编程技术网

Jsf Primefaces SelectOne菜单项在复合组件内禁用

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

我们创建了一个复合组件,其中包含primefacs selectOneMenu和一些标记。现在,我们有一个新的要求,使一些项目禁用。如何在复合组件中实现这一点?我们尝试的是:

复合组件:

<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])。您似乎在传递ctags
itemDisabled
属性中的值(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...
}