Pessoal, ja faz 3 dias que estou com este problema e ainda não consegui descobrir o motivo.
Segue o código:
<t:panelGroup>
<t:outputText value="* " styleClass="requiredField" />
<t:outputLabel for="cod_contrato" value="Código do Contrato" styleClass="label" />
</t:panelGroup>
<t:panelGroup colspan="3">
<t:outputText value="* " styleClass="requiredField" />
<t:outputLabel for="titular_contrato" value="Titular do Contrato" styleClass="label" />
</t:panelGroup>
<t:panelGroup >
<h:inputText id="cod_contrato" value="#{ReservaMB.obj.idContrato.idTitBanstur}"
styleClass="textField" size="10" maxlength="10" />
<a4j:commandButton image="images/refresh.gif" actionListener="#{ReservaMB.qryContratoByCodigo}"
reRender="cod_contrato, titular_contrato, nome_usuario" focus="nome_usuario"
ajaxSingle="true" process="cod_contrato" />
<h:message for="cod_contrato" styleClass="msgError" />
</t:panelGroup>
<t:panelGroup colspan="3" >
<h:inputText id="titular_contrato" value="#{ReservaMB.obj.idContrato.idCliente.nome}" styleClass="textField" size="50" maxlength="50" readonly="true" />
<h:commandButton image="images/find.gif" action="#{ReservaMB.selectContrato}" immediate="true" />
</t:panelGroup>
<t:panelGroup colspan="4" >
<h:outputText value="* " styleClass="requiredField" />
<h:outputLabel for="nome_usuario" value="Usuario" styleClass="label" />
</t:panelGroup>
<t:panelGroup colspan="4" >
<h:inputText id="nome_usuario" value="#{ReservaMB.obj.nomeUsuario}" styleClass="textField" size="80" maxlength="80" required="false"
onkeyup="this.value = this.value.toUpperCase()" autocomplete="false" />
<h:message for="nome_usuario" styleClass="msgError"/>
</t:panelGroup>
public void qryContratoByCodigo(ActionEvent evt) {
try {
Integer codContrato = this.getObj().getIdContrato().getIdTitBanstur();
this.getObj().setIdContrato(ContratoDAO.findByIdTitBanstur(null, codContrato));
this.getObj().setNomeUsuario(this.getObj().getIdContrato().getIdCliente().getNome());
} catch (SystemException e) {
this.getObj().setIdContrato(new ContratoVO());
this.getObj().setNomeUsuario(null);
FacesContext.getCurrentInstance().addMessage("cod_contrato", new FacesMessage("Contrato nao encontrado !"));
}
}
Log do glassfish:
PWC4011: Unable to set request character encoding to UTF-8 from context /bns_reservas, because request parameters have already been read, or ServletRequest.getReader() has already been called
sourceId=cod_contrato[severity=(INFO 0), summary=(Contrato nao encontrado !), detail=(Contrato nao encontrado !)];|WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=cod_contrato[severity=(INFO 0), summary=(Contrato nao encontrado !), detail=(Contrato nao encontrado !)]
O ajax atualiza todos os componentes do reRender, menos a mensagem de erro gerada no ManagedBean quando nenhum contrato é encontrado no banco.