【问题标题】:How to get rid of empty tooltips while displaying error messages on tooltips in PrimeFaces?如何在 PrimeFaces 的工具提示上显示错误消息时摆脱空的工具提示?
【发布时间】:2014-09-28 12:02:39
【问题描述】:

我在<p:tooltip> 的某处显示错误消息,如下所示。

<p:inputText id="text" value="#{bean.text}" required="true"/>

<p:tooltip for="text">
    <p:message for="text"/>
</p:tooltip>

虽然它显示给定工具提示的错误消息,但当没有错误时,会显示一个空的/不必要的工具提示,如下图所示 - 在文本框的右下角旁边。

如何摆脱这些空的工具提示? (我试过了,但没用)

【问题讨论】:

    标签: jsf primefaces tooltip jsf-2.2


    【解决方案1】:

    可以通过检查列表java.util.List&lt;FacesMessage&gt;中的错误消息来完成,该列表可以通过使用facesContext.messageList获得。

    &lt;p:tooltip&gt;rendered 属性可以根据相关组件列表中的错误消息进行设置。

    rendered="#{not empty facesContext.getMessageList('clientId')}"
    

    工作代码 sn-p :

    <h:form id="form">
        <p:panel id="panel">
            <p:inputText id="text" value="#{bean.text}" required="true"/>
    
            <p:tooltip for="text" rendered="#{not empty facesContext.getMessageList('form:text')}">
                <p:message for="text"/>
            </p:tooltip>
    
            <p:commandButton value="Submit" update="panel"/>
        </p:panel>
    </h:form>
    

    或者通过使用组件绑定。比如,

    <p:inputText id="text" binding="#{inputComponent}" value="#{bean.text}"/>
    
    <p:tooltip for="text" rendered="#{not empty facesContext.getMessageList(inputComponent.clientId)}">
        <p:message for="text"/>
    </p:tooltip>
    

    甚至

    <p:inputText id="text" binding="#{inputComponent}" value="#{bean.text}"/>
    
    <p:tooltip for="text" rendered="#{not inputComponent.valid}">
        <p:message for="text"/>
    </p:tooltip>
    

    最后两种情况很有用,尤其是当(输入)组件包含在迭代组件中时基于迭代组件的迭代行索引,如form:dataTable:0:textform:dataTable:1:textform:dataTable:2:text...等

    【讨论】:

      【解决方案2】:

      p:tooltip 应该有一个“rendered”属性,设置为 false

      来自文档:

      rendered : default=TRUE - 指定渲染的值 组件,当设置为 false 时,组件将不会被渲染。

      来源:http://courses.coreservlets.com/Course-Materials/pdf/jsf/primefaces/users-guide/p-tooltip.pdf

      【讨论】:

      • 好的,但是要根据什么条件设置rendered 属性以使其不显示空的工具提示?只有在出现错误时才应显示工具提示。
      • 可以使用jsf(findComponent)获取“组件”,并在其中调用valid方法。类似于:
      • 尝试 确保在 EL 表达式中将引号更改为单引号。确保在必要时也更新组件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      相关资源
      最近更新 更多