Formulário não emite as mensagens dos campos obrigatórios

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>