Boa tarde estou usando Primefaces e Ajax, quando eu clico no botão gravar o sistema não dispara as mensagens para os campos obrigatórios que ficaram sem preencher e também não limpa o formulário após a gravação, segue meu código:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Horas Extras</title>
</h:head>
<h:body>
<p:growl id="mensagem" />
<h:form id="formListagem">
<p:panel header="Horas Extras - Listagem">
<p:dataTable id="tabela" emptyMessage="Nenhum registro encontrado."
paginator="true" value="#{horasBean.horas}" var="ListHora" rows="10">
<f:facet name="header">
<p:commandButton value="Novo" oncomplete="PF('dialogo').show();"
actionListener="#{horasBean.novo()}" update=":mensagem :formCadastro:painel" />
<p:commandButton value="Imprimir" actionListener="#{horasBean.imprimir()}"/>
</f:facet>
<p:column headerText="Mês" sortBy="#{ListHora.mes}"
filterBy="#{ListHora.mes}">
<h:outputText value="#{ListHora.mes}" />
</p:column>
<p:column headerText="Ano" sortBy="#{ListHora.ano}"
filterBy="#{ListHora.ano}">
<h:outputText value="#{ListHora.ano}" />
</p:column>
<p:column headerText="Dia" sortBy="#{ListHora.dia}"
filterBy="#{ListHora.dia}">
<h:outputText value="#{ListHora.dia}" />
</p:column>
<p:column headerText="Hora Inícial" sortBy="#{ListHora.horaini}">
<h:outputText value="#{ListHora.horaini}" />
</p:column>
<p:column headerText="Hora Final" sortBy="#{ListHora.horafim}">
<h:outputText value="#{ListHora.horafim}" />
</p:column>
<p:column headerText="Total Hs" sortBy="#{ListHora.totalhoras}">
<h:outputText value="#{ListHora.totalhoras}" />
</p:column>
<p:column headerText="Valor HE" sortBy="#{ListHora.valor}">
<h:outputText value="#{ListHora.valor}" />
</p:column>
<p:column headerText="Valor DSR" sortBy="#{ListHora.dsr}">
<h:outputText value="#{ListHora.dsr}" />
</p:column>
<p:column headerText="Total Geral" sortBy="#{ListHora.totalGeral}">
<h:outputText value="#{ListHora.totalGeral}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-trash"
actionListener="#{horasBean.excluir}"
update=":mensagem :formListagem:tabela">
<p:confirm header="Confirmação"
message="Deseja excluir a Hora Extra?" icon="ui-icon-alert" />
<f:attribute name="horaExtraSelecionado" value="#{hora}" />
</p:commandButton>
<p:commandButton icon="ui-icon-pencil"
actionListener="#{horasBean.editar}" update=":formCadastro:painel"
oncomplete="PF('dialogo').show();">
<f:attribute name="horaExtraSelecionado" value="#{hora}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>
<p:dialog header="Horas Extras - Cadastro" widgetVar="dialogo"
draggable="false" resizable="false" modal="true" closable="false">
<h:form id="formCadastro">
<h:panelGrid id="painel" columns="2">
<p:outputLabel value="Mês:" />
<p:selectOneMenu id="console" value="#{horasBean.hora.mes}"
style="width:125px">
<f:selectItem itemLabel="Janeiro" itemValue="Janeiro" />
<f:selectItem itemLabel="Fevereiro" itemValue="Fevereiro" />
<f:selectItem itemLabel="Março" itemValue="Março" />
<f:selectItem itemLabel="Abril" itemValue="Abril" />
<f:selectItem itemLabel="Maio" itemValue="Maio" />
<f:selectItem itemLabel="Junho" itemValue="Junho" />
<f:selectItem itemLabel="Julho" itemValue="Julho" />
<f:selectItem itemLabel="Agosto" itemValue="Agosto" />
<f:selectItem itemLabel="Setembro" itemValue="Setembro" />
<f:selectItem itemLabel="Outubro" itemValue="Outubro" />
<f:selectItem itemLabel="Novembro" itemValue="Novembro" />
<f:selectItem itemLabel="Dezembro" itemValue="Dezembro" />
</p:selectOneMenu>
<p:outputLabel value="Ano:" />
<p:inputText id="txtAno" maxlength="4" size="4" value="#{horasBean.hora.ano}"
required="true" requiredMessage="O campo 'Ano' é obrigatório" />
<p:outputLabel value="Dia:" />
<p:inputText maxlength="2" size="2" value="#{horasBean.hora.dia}"
required="true" requiredMessage="O campo 'Dia' é obrigatório" />
<p:outputLabel value="(%):" />
<p:inputText id="txtPercentual" maxlength="3" size="3"
value="#{horasBean.hora.percentual}" required="true"
requiredMessage="O campo 'Percentual' é obrigatório" />
<p:outputLabel value="Hora inicial:" />
<p:inputMask id="txtHoraInicial" maxlength="5" size="5"
value="#{horasBean.hora.horaini}" mask="99:99" required="true"
requiredMessage="O campo 'Hora Inicial' é obrigatório" />
<p:outputLabel value="Hora Final:" />
<p:inputMask id="txtHoraFinal" maxlength="5" size="5" mask="99:99"
value="#{horasBean.hora.horafim}" required="true"
requiredMessage="O campo 'Hora Final' é obrigatório">
<p:ajax event="blur" listener="#{horasBean.calcular()}"
update="txtTotalHoras txtValor txtDSR txtTotalGeral"
process="txtHoraInicial txtHoraFinal txtPercentual txtTotalHoras txtAno console" />
</p:inputMask>
<p:outputLabel value="Total Hs:" />
<p:inputText id="txtTotalHoras" maxlength="3" size="3" readonly="true"
value="#{horasBean.hora.totalhoras}">
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
<p:outputLabel value="Funcionario:" />
<p:selectOneMenu id="cmbfuncionario" value="#{horasBean.hora.codfuncionario}" required="true"
converter="omnifaces.SelectItemsConverter">
<f:selectItems value="#{horasBean.funcionarios}" var="horas"
itemValue="#{horas}" itemLabel="#{horas.nmfuncionario}"/>
</p:selectOneMenu>
<p:outputLabel value="R$ Valor:" />
<p:inputText id="txtValor" maxlength="5" size="5"
value="#{horasBean.hora.valor}" >
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
<p:outputLabel value="Atividade:" />
<p:inputTextarea maxlength="250" cols="30" rows="5"
autoResize="false" value="#{horasBean.hora.atividade}"
required="true" requiredMessage="O campo 'Atividade' é obrigatório" />
<p:outputLabel value="DSR:" />
<p:inputText id="txtDSR" maxlength="5" size="5" value="#{horasBean.hora.dsr}">
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
<p:outputLabel value="R$ Total:" />
<p:inputText id="txtTotalGeral" maxlength="5" size="5"
value="#{horasBean.hora.totalGeral}" >
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar" actionListener="#{horasBean.salvar}"
update=":mensagem :formCadastro:painel :formListagem:tabela" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</html>