可以通过检查列表中的错误消息来完成java.util.List<FacesMessage>
可以通过使用获得facesContext.messageList
.
The rendered
的属性<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>
Or even
<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:text
, form:dataTable:1:text
, form:dataTable:2:text
... 等等