【问题标题】:PrimeFaces 6.2 commandButton title not working when commandbutton is disabled禁用命令按钮时 PrimeFaces 6.2 命令按钮标题不起作用
【发布时间】:2018-05-10 20:53:34
【问题描述】:

环境:JSF 2.2.14,PrimeFaces 6.2

我的命令按钮设置如下,当按钮被禁用时,标题将在 PF6.1 中显示(悬停时),但在 PF6.2 中不会显示

<p:commandButton id="removeCmd" icon="fa fa-times" 
             actionListener="#{controller.remove()}" 
             update="@form"
             disabled="#{ontroller.isCommandDisabled()}"                                                          
             style="width: 20px; height:20px;margin-left: 5px;"
             title="#{controller.isCommandDisabled() ? 'Command disabled due to user privilege' : 'remove selected item'}"
             onstart="PF('bui').show(); PF('bar').show();" 
             oncomplete="PF('bui').hide(); PF('bar').hide();"
             styleClass="removeCmd"/>

按钮未禁用时标题显示正常。

有人遇到同样的问题吗?我还尝试将我的 p:commandButton 包装在 h:panelGrid 中并使用 p:tooltip ,但也不起作用。

更新:在 github 上创建的问题:https://github.com/primefaces/primefaces/issues/3656

【问题讨论】:

  • 请在 PrimeFaces 问题列表中提出问题。不确定这是不是故意的改变。你知道可以把isCommandDisabled()写成commandDisabled
  • 会的。是的,如果 commandDisabled 是一个 bean 属性,这不是我的情况;它是一个有其他输入参数但这里没有指定的方法。

标签: jsf primefaces


【解决方案1】:

我的天性很好奇(我会稍微关注一下 PrimeFaces 的变化)。如果按钮的标题在 6.1 和 6.2 之间不再起作用,我开始分析一下。为两个 PrimeFaces 版本中的按钮生成的 html 是相同。这让我想到它是否也会停止为其他组件工作。所以我创建了一个简单的页面

<p:inputText title="myInput enabled" />
<p:inputText title="myInput disabled" disabled="true"/>

并且使用 PrimeFaces 6.1 和 6.2 之间的行为变化是相同的。标题适用于 6.1 和仅适用于 6.2 中的第一个。由于 PrimeFaces 6.1 和 6.2 之间的 jquery 发生了重大变化,我在 google 中发布了“jquery 显示禁用输入和按钮的标题工具提示”。

其中一个热门是: Show tooltip for disabled items

其中有一个对某些 css(!) 的引用,它禁用了 dom 事件,因此不显示标题。

pointer-events: none;

我打开了我的浏览器开发工具,并在 css 选项卡的过滤器部分输入了“指针”。使用 6.1 时,那里什么都没有,但在 6.2 中却有。

.ui-state-disabled {
    cursor: default !important;
    pointer-events: none;
}

这似乎来自 components.css 文件(根据我的浏览器开发工具)。这不是 PrimeFaces 存储库中存在的文件,而是通过 maven 构建 PrimeFaces 版本时创建的文件:

这里包含的文件之一是jquery-ui.css,其中包含上面引用的css。

当我在浏览器开发者工具中禁用相应的pointer-events: none 时,输入和按钮的标题都变得可见。

因此,如果您想覆盖此设置,请将其设置为“全部”(或您喜欢的任何其他值)。

html .ui-state-disabled {
    pointer-events: all;
}

另请参阅

【讨论】:

  • 这也适用于“f:selectItems”中的“itemdisabled”,干得好,谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多