JSF - AJAX - RESPOSTA ao AJAX - LOGIN

0 respostas
java
C

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?

Criado 15 de fevereiro de 2016
Respostas 0
Participantes 1