Jsf p:selectManyCheckbox或其他p:selectMany*/One的Primefaces工具提示*

Jsf p:selectManyCheckbox或其他p:selectMany*/One的Primefaces工具提示*,jsf,primefaces,tooltip,Jsf,Primefaces,Tooltip,我想为p:selectManyCheckBox中的每个元素添加工具提示。但是我想不出一个解决办法 我有一个类Role,它有3个属性,“id”(Long)、“name”(String)和“description”(String)。将显示名称,我希望将描述作为工具提示 这是一段工作代码: <p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter"

我想为
p:selectManyCheckBox
中的每个元素添加工具提示。但是我想不出一个解决办法

我有一个类
Role
,它有3个属性,“id”(Long)、“name”(String)和“description”(String)。将显示名称,我希望将描述作为工具提示

这是一段工作代码:

<p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter">
    <f:selectItems value="#{roleBean.roles}" var="role" itemLabel="#{role.name}" itemValue="#{role}"/>
</p:selectManyCheckbox>

但不幸的是,它不起作用。

您可以使用以下属性来实现这一点:

<p:selectManyCheckbox layout="pageDirection"
    value="#{roleBean.selectedRoles}" converter="roleConverter">
    <f:selectItems value="#{roleBean.roles}" var="role" 
        itemValue="#{role}" itemLabel="#{role.name}" 
        itemDescription="#{role.description}" />
</p:selectManyCheckbox>
faces config.xml
中注册如下:

<render-kit>
    <renderer>
        <component-family>org.primefaces.component</component-family>
        <renderer-type>org.primefaces.component.SelectManyCheckboxRenderer</renderer-type>
        <renderer-class>com.example.YourSelectManyCheckboxRenderer</renderer-class>
    </renderer>
</render-kit>

org.primefaces.component
org.primefaces.component.selectManyCheckBox渲染器
com.example.YourSelectManyCheckBox渲染器

我不得不修改BalusC的解决方案,使其在我的案例中起作用。这是因为我必须在Bean端构建SelectItems列表

public List<SelectItem> getMyItems(){
  List<SelectItem> mySelectItems = new ArrayList<>();
  [loop or ohter code to collect items]
  // create SelectItem with description
  mySelectItems.add(new SelectItem([value], [label], [description]));
  ...
  return mySelectItems;
}
public List getMyItems(){
List mySelectItems=newarraylist();
[收集项目的循环或ohter代码]
//创建带有说明的SelectItem
添加(新的SelectItem([value]、[label]、[description]);
...
归还所选物品;
}
然后,这些SelectItems可用于:

<f:selectItems value="#{myBean.myItems}"/>

对selectManyCheckbox的工具提示支持自Primefaces v6.2版本开始。其他组件也支持这一点

XHTML代码与BalusC报告的代码相同

<p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter">
    <f:selectItems value="#{roleBean.roles}" var="role" 
        itemValue="#{role}" itemLabel="#{role.name}" itemDescription="#{role.description}" />
</p:selectManyCheckbox>


但不再需要重写PrimeFaces SelectManyCheckboxRenderer

Mandator/client和特定于访问权限的SelectItems。在Bean端执行此操作的代码比在xhtml中更好。
<f:selectItems value="#{myBean.myItems}"/>
<p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter">
    <f:selectItems value="#{roleBean.roles}" var="role" 
        itemValue="#{role}" itemLabel="#{role.name}" itemDescription="#{role.description}" />
</p:selectManyCheckbox>