如何在PrimeFaces中的工具提示上显示错误消息时摆脱空工具提示?

时间:2014-08-05 17:58:30

标签: jsf primefaces tooltip jsf-2.2

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

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

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

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

enter image description here

如何摆脱这种空洞的工具提示? (我尝试了但是没有用)

2 个答案:

答案 0 :(得分:3)

可以通过检查列表java.util.List<FacesMessage>中可以使用facesContext.messageList获取的错误消息来完成。

rendered的{​​{1}}属性可以根据列表中找到的错误消息来设置相关组件的内容。

<p:tooltip>

正在运行的代码段:

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

或者使用组件绑定。如,

<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> <p/h:dataTable><p:dataGrid>(或甚至<p:dataList>)其中封闭组件的唯一性是根据迭代组件的迭代行索引确定的,例如<ui:repeat>form:dataTable:0:textform:dataTable:1:text ......等等

答案 1 :(得分:0)

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

来自文档:

  

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

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