Jsf 选择复选框菜单-禁用“所有选择”

Jsf 选择复选框菜单-禁用“所有选择”,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有一个SelectCheckBoxMenu Primefaces组件,其中包含大量条目。但是,用户最多可以选择3个项目。SelectCheckBoxMenu FullFil几乎满足了我所有的要求,唯一的问题是它提供了选择所有项目的可能性,在这种情况下,我显然不需要这些项目 是否可以禁用全选选项?我正在使用一个事件检查最多3个条目。我想我可以对全选做同样的事情,不允许他选择它们,但我根本不想有全选选项 代码如下: <p:selectCheckboxMenu value="#{service

我有一个SelectCheckBoxMenu Primefaces组件,其中包含大量条目。但是,用户最多可以选择3个项目。SelectCheckBoxMenu FullFil几乎满足了我所有的要求,唯一的问题是它提供了选择所有项目的可能性,在这种情况下,我显然不需要这些项目

是否可以禁用全选选项?我正在使用一个事件检查最多3个条目。我想我可以对全选做同样的事情,不允许他选择它们,但我根本不想有全选选项

代码如下:

<p:selectCheckboxMenu value="#{services.titelId}" id="titel" 
            panelStyle="width:160px;" rendered="#{!services.isFirma()}"
            label="#{services.prepareTitel()}" style="width:160px;"
            styleClass="checkbox">
            <f:selectItems value="#{meta.getAkadTitelList()}" />
            <p:ajax event="change" listener="#{services.validateTitel()}"
                update="titel" process="@this" />
            <p:ajax event="toggleSelect" update="titel" process="@this" />
</p:selectCheckboxMenu>
此外,指向primefaces showcase示例的链接:
您可以将css规则添加到css文件中

#titel .ui-chkbox .ui-widget {
     display:none;
}
您应该将prependId=false添加到h:form中,或者如果不想添加prependId=false,您可以将titel.ui chkbox.ui小部件选择器更改为类似myForm\3A titel.ui chkbox.ui的小部件来处理:id分隔符

如果要删除整个过滤器行,可以设置

<p:selectCheckboxMenu filter="false"....

在PrimeFaces 5.0下,前面的答案不适用于我,因此我深入研究了生成的HTML,并找到了PF5的解决方案

对于PrimeFaces 5.0,您可以删除“全选”复选框,如下所示:

.without-selectall .ui-selectcheckboxmenu-header .ui-chkbox {
    display: none; 
}
现在使用panelStyleClass属性而不是styleClass:


像往常一样谢谢你,我尝试了两种选择,但都不起作用。然而,你让我走上了正确的道路,css规则就是答案。我确实从checkboxmenu中删除了标题,这很有意义,这正是我所需要的。ui-selectcheckboxmenu标题{display:none;}我更改了primefaces css,因为它对我的项目有意义,但是如果其他人也有同样的问题,请注意,只针对所需的selectboxmenu执行此操作。再次感谢Daniel。您最好不要更改primefacs css,而是将此tule添加到您自己的css文件中,并确保它将在最后加载。。。所以它会覆盖primefaces css…哦,对不起,我表达得很糟糕,我没有更改primefaces.css,我在自己的css中添加了这段代码。你也可以只使用一个类名。例如,然后使用.ui-selectcheckboxmenu.without-selectall代替titel。这是可重用的。是的,这是最好的方法,这就是我在第一次回答时想说的:对于其他人,最好使用自己的css声明。这不是组合框。你的CSS类名是误导性的,不是自我记录的。是的,你是对的。我修改了。简单完美的解决方案,谢谢!
<p:selectCheckboxMenu ...
    panelStyleClass="without-selectall"
>