首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >p:selectManyCheckbox或其他p:selectMany*/One*的Primefaces工具提示

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

Stack Overflow用户
提问于 2012-08-02 23:04:13
回答 3查看 9.7K关注 0票数 9

我想为p:selectManyCheckBox中的每个元素添加一个工具提示。然而,我想不出一个解决方案。

我有一个类Role,它有3个属性,"id“(长),"name”(字符串)和"description“(字符串)。名称已显示,我希望将其描述作为工具提示。

这是一段有效的代码:

代码语言:javascript
运行
复制
<p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter">
    <f:selectItems value="#{roleBean.roles}" var="role" itemLabel="#{role.name}" itemValue="#{role}"/>
</p:selectManyCheckbox>

roleConverter是一个FacesConverter,它将Role转换为id,反之亦然。

我想出了这个:

代码语言:javascript
运行
复制
<p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter">
    <c:forEach var="role" items="#{roleBean.roles}">
        <f:selectItem id="role#{role.id}" itemLabel="#{role.name}" itemValue="#{role}" />
        <p:tooltip for="role#{role.id}" value="#{role.description}"/>
    </c:forEach>
</p:selectManyCheckbox>

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-20 20:13:17

您可以通过使用SelectItem#getDescription()属性来实现此目的,如下所示:

代码语言:javascript
运行
复制
<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 6.2 (actually because of this very answer you're reading now)开始支持的。

如果您尚未使用PrimeFaces 6.2,并且由于某种原因无法升级,那么您需要手动覆盖PrimeFaces SelectManyCheckboxRenderer#encodeOptionLabel(),如下所示,以便识别和呈现它:

代码语言:javascript
运行
复制
public class YourSelectManyCheckboxRenderer extends SelectManyCheckboxRenderer {

    @Override
    protected void encodeOptionLabel(FacesContext context, SelectManyCheckbox checkbox, String containerClientId, SelectItem option, boolean disabled) throws IOException {
        ResponseWriter writer = context.getResponseWriter();
        writer.startElement("label", null);
        writer.writeAttribute("for", containerClientId, null);

        if (option.getDescription() != null) {
            writer.writeAttribute("title", option.getDescription(), null);
        }

        if (disabled) {
            writer.writeAttribute("class", "ui-state-disabled", null);
        }

        if (option.isEscape()) {
            writer.writeText(option.getLabel(), null);
        } else {
            writer.write(option.getLabel());
        }

        writer.endElement("label");
    }

}

它在faces-config.xml中注册如下

代码语言:javascript
运行
复制
<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>
票数 16
EN

Stack Overflow用户

发布于 2019-09-17 18:13:08

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

XHTML代码与所报告的BalusC相同

代码语言:javascript
运行
复制
<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

票数 1
EN

Stack Overflow用户

发布于 2018-04-04 17:26:23

我不得不修改BalusC的解决方案,使其在我的情况下工作。这是因为我必须在Bean端构建SelectItems列表。

代码语言:javascript
运行
复制
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;
}

然后,这些SelectItems可以与以下内容一起使用:

代码语言:javascript
运行
复制
<f:selectItems value="#{myBean.myItems}"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11780397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档