Boa tarde prezas,
Como posso fazer para retornar um JSON ou TEXT do servidor enviando por ajax em JSF?
O que eu gostaria era o seguinte:
Quando clicar em login ele exibir um gif no h1 do form antes da requisição(begin) e some quando acaba(complete)
Depois se não logar :

ai exibe a div, se logar exibe a outra div:

e depois de exibir redireciona para pagina logado.
Por exemplo…
Tenho meu from de login:
<h1>Efetuar Login: <img src="img/loader.gif" alt="Carregando" title="Carregando" /></h1>
<h:form name="login" >
<label class="label">
<span class="field">Usuário:</span>
<h:inputText name="user" id="login" value="#{loginBean.login}"/>
</label>
<div class="label">
<span class="field">Senha:</span>
<h:inputSecret name="pass" class="pass" id="senha" value="#{loginBean.senha}"/>
<h:commandButton value="Logar-se" class="btn" id="logar" >
<f:ajax onevent="functionName" listener="#{loginBean.autentica}" execute="@all" />
</h:commandButton>
</div>
</h:form>
Hoje ele chama a seguinte função:
Assim eu posso executar javascript antes e depois da requisição, porem ele sempre cai em success mesmo a senha estando errada, tem como eu retornar algo do servidor para fazer um teste em success para exibir a div correta? Não consegui fazer no método tradicional que seria mais fácil:
$.ajax({
url: ,
type: "POST",
data: {
},
dataType: "text/html",
success: function (data) {
...
},
error: function () {
...
}
})
Estou usando ManagedBean JSF
Eu consegui algo parecido assim:
FacesContext ctx = FacesContext.getCurrentInstance();
ExternalContext extContext = ctx.getExternalContext();
if (ctx.getPartialViewContext().isAjaxRequest()) {
try {
extContext.setResponseContentType("text/xml");
// extContext.addResponseHeader("Cache - Control ", "no - cache");
PartialResponseWriter writer = ctx.getPartialViewContext()
.getPartialResponseWriter();
writer.startDocument();
writer.startEval();
writer.write("$('.loginbox .sucesso').css('display', 'block');");
writer.endEval();
writer.endDocument();
writer.flush();
ctx.responseComplete();
} catch (Exception e) {
System.out.println(e);
}
}
Porem assim só consigo exibir a div, mas não o gif de begin e complete e também assim não consigo redirecionar para a página em caso de login Ok.
Alguém me ajudaaaaa?

