Olá.
Estou desenvolvendo uma aplicação JSF 2.0 e Primefaces no Eclipse.
Tenho um formulário de inserção, com dois campos um p:inputText, e um p:inputMask, e alguns botões: voltar, gravar, limpar.
Meu problema começa quando eu clico em Limpar. Preciso que seja desconsiderado a validação dos campos.
Código da .xhtml reduzido:
<!-- txtNomeCargo -->
<h:panelGrid id="nomeCargo" columns="2" cellpadding="0" cellspacing="0" width="450" styleClass="espacamentoGrid">
<h:panelGroup>
<h:outputText value="#{msgs.label_cargo}:*" styleClass="rotulo"/>
<p:inputText
id="txtNomeCargo"
style="margin-left:57px;"
size="23"
maxlength="21"
value="#{cargoBean.nomeCargo}"
required="true"
requiredMessage="Campo Obrigatório"
/>
</h:panelGroup>
<h:panelGroup>
<p:message for="txtNomeCargo"/>
</h:panelGroup>
</h:panelGrid>
<!-- txtNomeCargo -->
<!-- txtCargaHoraria -->
<h:panelGrid columns="2" id="cargaHoraria" cellpadding="0" cellspacing="0" width="450" styleClass="espacamentoGrid">
<h:panelGroup>
<h:outputText value="#{msgs.label_carga_horaria}:*" styleClass="rotulo"/>
<p:inputMask
style="margin-left:5px;"
size="5"
id="txtCargaHoraria"
value="#{cargoBean.cargaHoraria}"
mask="99:99"
required="true"
requiredMessage="Campo Obrigatório"
/>
</h:panelGroup>
<h:panelGroup>
<p:message for="txtCargaHoraria"/>
</h:panelGroup>
</h:panelGrid>
<!-- txtCargaHoraria -->
Os campos estão como: required="true" para serem validados, porém isso implica no funcionamento do botão limpar, que não executa sua ação.
Tentei alterar o valor ro required em tempo de execução, mas não obtive sucesso.
O código do botão limpar no .xhtml:
<!-- Botão limpar -->
<h:panelGrid columns="1" cellpadding="0" cellspacing="0" style="float:right;" styleClass="alinhamentoBotao">
<h:panelGroup>
<h:commandButton
image="/imagens/limpar.png"
action="#{cargoBean.limparCampos}"
immediate="true"
/>
</h:panelGroup>
</h:panelGrid>
<!-- Botão limpar -->
public String limparCampos(){
setCargaHoraria(null);
setNomeCargo(null);
return "";
}
Ao clicar no botão limpar, a tela "pisca" como sendo renderizada, porém os inputs na tela não são limpos.
Tentei também colocar no botão o immediate = true, mas não funcionou também.
Se alguém puder me ajudar, ficarei grato.
Obrg.