Galera, eu tô com um probleminha com reRender… Tenho 1 a4j:commandButton que, através de um a4j:support atualiza, ao completar, uma série de campos. Sendo que eu tava tentando fazer com que ele exibisse uma mensagem, informando se a operação foi bem sucedida ou não. Acontece que toda vez que eu coloco pra atualizar essa mensagem, um a4j:status que tem na página não sai de “Aguarde…”. Coloquei também um método pra ser chamado quando completar. Esse método é chamado, porém o a4j:status não sai do “Aguarde…”. Alguem sabe do que se trata ? Estou passando a baixo o meu jsf e o método que atualiza, do meu bean.
[code]<a4j:region id=“formulario”>
<h:form>
<h:panelGrid columns=“3”>
<h:outputText value=“Login do responsável: "
styleClass=“textoNormal” />
<h:inputText id=“loginResponsavel” maxlength=“10”
value=”#{inserirReservaBean.loginResponsavel}"
styleClass=“textoNormal” required=“true” style=" width : 235px;" />
<rich:message for=“loginResponsavel” styleClass=“textoNormal” />
<h:outputText value=“Setor: " styleClass=“textoNormal” />
<h:panelGroup>
<h:selectOneMenu id=“listaDeSetores”
valueChangeListener=”#{inserirReservaBean.assinalarSelectDeSetor}"
styleClass=“textoNormal”>
<f:selectItems value="#{inserirReservaBean.listaDeSetores}" />
</h:selectOneMenu>
</h:panelGroup>
<h:outputText value=" " />
<h:outputText value=“Motivo da reserva:” styleClass=“textoNormal” />
<h:inputTextarea id=“motivoReserva”
value="#{inserirReservaBean.motivo}" rows=“4” cols=“50”
styleClass=“textoNormal” required=“true” />
<rich:message for=“motivoReserva” styleClass=“textoNormal” />
<h:outputText value=" " />
<h:panelGroup>
<a4j:commandButton id=“insereReserva” status=“status”
actionListener="#{inserirReservaBean.inserirReserva}"
value=“Ok !” styleClass=“textoNormal”>
<a4j:support event=“oncomplete”
action="#{inserirReservaBean.quandoCompletar}"
reRender=“scrollIntervalos, motivoReserva, loginResponsavel”>
</a4j:support>
</a4j:commandButton>
<a4j:status for=“formulario” id=“status”
startText=“Em andamento…” stopText=" "
startStyleClass=“textoNormal” />
</h:panelGroup>
<h:outputText value=" " />
<h:outputText value=" " />
</h:panelGrid>
</h:form>
</a4j:region>[/code]
public void inserirReserva(ActionEvent event) {
System.out.println("CHAMADA !!");
System.out.println("Login do responsável: " + loginResponsavel);
System.out.println("Código do setor escolhido: " + codigoDoSetor);
if (listaDeDatas.isEmpty()) {
System.out.println("1");
this.mensagemCliente = "Você não escolheu nenhum horário para reservar. Por favor, escolha e tente novamente.";
} else {
System.out.println("2");
try {
if (fachada.cadastrarReservas(new Reservas(this.listaDeDatas,
new Setor(this.codigoDoSetor), this.recurso, "",
this.loginResponsavel, "", this.motivo))) {
this.mensagemCliente = "Reserva efetuada com sucesso !";
this.motivo = "";
this.loginResponsavel = "";
this.listaDeDatas.clear();
System.gc();
} else {
this.mensagemCliente = "Impossível inserir.";
}
} catch (ReservaException e) {
this.mensagemCliente = "Erro no comando SQL. Por favor, informa a um administrador.";
}
}
}
Já fiz vááários testes e nada… Acontece a mesma coisa. O mais interessante é que só sai do “Aguarde…” e a mensagem é “reRenderizada” quando a reserva (no caso, as reservas) são inseridas. Caso contrário, nada acontece (Quando dá uma exception, por exemplo).