如何在组件验证失败时呈现h:message

时间:2013-07-04 18:59:08

标签: validation jsf-2 primefaces message

我在使用p:消息时遇到问题,所以我尝试对每个组件使用p:message,如下所示:

<div style="position: relative;">
    <h:panelGrid id="messages" columns="1">
      <p:message for="idTxtFirstName" id="msgFirstName" />
      <p:message for="idTxtLastName"  id="msgLastName" />
      <p:message for="idTxtTitle"  id="msgTitle" />
      <p:message for="idTxtCompany" id="msgCompany" />
      <p:message for="idTxtEmail"  id="msgEmail" />
      <p:message for="idTxtPhoneNumber" id="msgPhoneNumber" />
      <p:message for="idEstNumOfUser" id="msgEstNumOfUser" />
    </h:panelGrid>                                          
</div>

即使存在任何错误,默认生成的HTML也是:

<table id="betasignup:messages">
<tbody>
<tr>
<td><div id="betasignup:msgFirstName" aria-live="polite"></div></td>
</tr>
<tr>
<td><div id="betasignup:msgLastName" aria-live="polite"></div></td>
</tr>
<tr>
<td><div id="betasignup:msgTitle" aria-live="polite"></div></td>
</tr>
<tr>
<td><div id="betasignup:msgCompany" aria-live="polite"></div></td>
</tr>
<tr>
<td><div id="betasignup:msgEmail" aria-live="polite"></div></td>
</tr>
<tr>
<td><div id="betasignup:msgPhoneNumber" aria-live="polite"></div></td>
</tr>
<tr>
<td><div id="betasignup:msgEstNumOfUser" aria-live="polite"></div></td>
</tr>
</tbody>
</table>

所以我想知道如果只对组件进行验证失败,如何呈现消息组件(通常验证失败),我的意思是在相关组件只有验证错误之前不要生成任何html。 / p>

1 个答案:

答案 0 :(得分:0)

您需要指定应在消息标记中验证的组件的id。如果要验证<p:inputText>的输入,它应如下所示:

<p:inputText id="inputText" value="#{mrBean.text}"/>
<p:message for="inputText" id="inputTextMessage"/>

然后只有在组件的JSF验证失败时才会呈现消息。

正如我所见,您已在邮件的for中选择了其他ID。这应该是为什么这不起作用的原因。