SelectCheckboxMenu - 禁用"全选"

leo*_*tiw 7 jsf primefaces jsf-2

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

是否有可能禁用"全选"选项?我正在使用一个事件检查条目的最​​大值.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>
Run Code Online (Sandbox Code Playgroud)

此外,链接到primefaces-展示示例:https://www.primefaces.org/showcase/ui/input/checkboxMenu.xhtml

stg*_*stg 17

之前的答案在PrimeFaces 5.0下对我不起作用,所以我对生成的HTML进行了深入研究,并找到了PF5的解决方案.

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

.without-selectall .ui-selectcheckboxmenu-header .ui-chkbox {
    display: none; 
}
Run Code Online (Sandbox Code Playgroud)

现在使用panelStyleClass-attribute而不是styleClass:

<p:selectCheckboxMenu ...
    panelStyleClass="without-selectall"
>
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 6

您可以将css规则添加到您的css文件中

#titel .ui-chkbox .ui-widget {
     display:none;
}
Run Code Online (Sandbox Code Playgroud)

您应该添加prependId="false"到您的h:form,或者如果您不想添加,prependId="false"您可以将#titel .ui-chkbox .ui-widget选择器更改为类似#myForm\3A titel .ui-chkbox .ui-widget(以处理:id分隔符)


如果您希望删除整个过滤器行,可以进行设置

<p:selectCheckboxMenu filter="false"....
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用类名.例如`<p:selectCheckboxMenu styleClass ="without-selectall">`然后使用`.ui-selectcheckboxmenu.without-selectall`而不是`#titel`.这更可重复使用. (6认同)