Estou implementando uma tela conforme os exemplos de Livro e Autor, porém estou com problema na renderização da tela após uma validação efetuada no ManagedBean. Está ocorrendo um Null Pointer Exception com o valor de um atributo que é recebido na tela pelo ViewParam. Pelo debug, o managedbean é chamado várias vezes, na primeira vez os valores estão corretos, mas da segunda em diante aparecem nulos.
O que pode estar ocorrendo?
Segue código da tela:
<ui:define name="corpoParceiro">
<section>
<div class="container">
<div class="block-header ">
<h6 class="text-uppercase mb-0 text-center">Informar o valor promocional</h6>
</div>
<f:metadata>
<f:viewParam name="produtoId" value="#{produtoPromocaoMB.produto.proId}" />
<f:viewParam name="primeiroAcesso" value="#{produtoPromocaoMB.primeiroAcesso}" />
<f:viewAction action="#{produtoPromocaoMB.irParaManterProdutoPromocao()}" if="#{produtoId > 0 and primeiroAcesso == 'true'}" />
</f:metadata>
<div class="block mb-5">
<div class="block-body">
<mens:mensagens />
<h:form class="form-horizontal" id="informarValor" >
<!-- /.row-->
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label>
<strong class="d-block text-uppercase" jsf:styleClass="font-size: 1.125rem;">#{produtoPromocaoMB.produto.nome}</strong>
</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label for="estoque" class="form-label text-body">Valor Promocional</label>
<input type="number" id="estoque" class="form-control " size="9" maxlength="9"
jsf:value="#{produtoPromocaoMB.produtoPromocao.valorPromocional}" pattern="^\d+(?:\.\d{1,2})?$"
max="9999999.99" min="0.00" step="0.01" />
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label for="inicioValidade" class="form-label">Data Início validade</label>
<h:inputText pt:type="date" pt:min="01-01-1900" value="#{produtoPromocaoMB.dataInicio}"
required="required" pt:class="form-control" >
<f:convertDateTime pattern="yyyy-MM-dd" timeZone="America/Sao_Paulo" />
</h:inputText>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label for="inicioValidade" class="form-label">Hora Início validade</label>
<h:inputText pt:type="time" value="#{produtoPromocaoMB.horaInicio}"
pt:required="required" pt:class="form-control" >
<f:convertDateTime pattern="HH:mm" timeZone="America/Sao_Paulo" />
</h:inputText>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label for="inicioValidade" class="form-label">Data Final validade</label>
<h:inputText pt:type="date" pt:min="01-01-1900" value="#{produtoPromocaoMB.dataFinal}"
pt:required="required" pt:class="form-control" >
<f:convertDateTime pattern="yyyy-MM-dd" timeZone="America/Sao_Paulo" />
</h:inputText>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label for="inicioValidade" class="form-label">Hora Final validade</label>
<h:inputText pt:type="time" value="#{produtoPromocaoMB.horaFinal}"
pt:required="required" pt:class="form-control" >
<f:convertDateTime pattern="HH:mm" timeZone="America/Sao_Paulo" />
</h:inputText>
</div>
</div>
</div>
<br />
<!-- /.row-->
<div class="col-sm-12">
<div class="row">
<div class="col-sm-5">
<button type="submit" class="btn btn-outline-primary" jsf:action="#{produtoPromocaoMB.salvarProdutoPromoca()}" jsf:id="salvarEstoque">
<i class="far fa-save fa-lg"></i> Salvar Preço Produto
</button>
</div>
</div>
</div>
</h:form>
</div>
</div>
</div>
</section>
</ui:define>
</ui:composition>