Vraptor + extjs e redirecionamentos

6 respostas
jingle

Alguem aqui usa ou usou já extjs e vraptor 3? não to conseguindo fazer funcionar os redirecionamento do vraptor.

meu controller:

@Post
	public void login(String login, String password) {
	        //toda validação e bla bla bla do login.... aqui.

		result.use(Results.logic()).redirectTo(UsuarioController.class).home();
	}

meu form extjs:

var fp = new Ext.FormPanel({
        id: 'loginForm',
        renderTo: Ext.getBody(),
        labelWidth: 75,
        width: 350,
        buttonAlign: 'right',
        border: false,
        frame:true,
        items:[ //campos do formulario aqui.
        ],
        buttons: [{
            text: 'Save',
            handler: function(){
                if(fp.getForm().isValid()){
                    fp.getEl().mask();
                    fp.getForm().submit({
                        url: 'login',
                        waitMsg:'Loading',
                        method:'POST'                          
                    });
                }
            }
        }]
    });

ele chama e executa tudo OK meu controller, porém o redirect não vai... nem o do "onErrorUse" não funciona...

6 Respostas

Gustavokt

Não tenho tanta experiência com o Vraptor, tenho mais com o Extjs. Qual versão você está usando? Se você conseguiu entrar no controller, acredito que não deve ser um problema do extjs. Tente isolar o problema. Você conseguiu fazer um redirect sem usar o extjs na camada de apresentação?

jingle

O Problema ta no extjs, porque faço um formulario simples:

<form action="<c:url value="/home/login"/>" name="loginForm" method="post"> <fieldset> <legend>Sign In</legend> <label for="login"><fmt:message key="login" /></label> <input type="text" name="login" id="login" /> <label for="password"><fmt:message key="password" /></label> <input type="password" name="password" id="password"/> <button type="submit" id="submit"><fmt:message key="send"/></button> </fieldset> </form>

ele chama o mesmo HomeController faz o redirect para o UsuarioController e carrega a página. (isso no formulário basico)

no extjs ele chama o HomeController faz o redirect para o UsuarioController porém não carrega a página (parece que form do extjs fica esperando uma resposta, porque não entra nem no sucess nem no failure)

Gustavokt

O Problema ta no extjs, porque faço um formulario simples:

<form action="<c:url value="/home/login"/>" name="loginForm" method="post"> <fieldset> <legend>Sign In</legend> <label for="login"><fmt:message key="login" /></label> <input type="text" name="login" id="login" /> <label for="password"><fmt:message key="password" /></label> <input type="password" name="password" id="password"/> <button type="submit" id="submit"><fmt:message key="send"/></button> </fieldset> </form>

ele chama o mesmo HomeController faz o redirect para o UsuarioController e carrega a página. (isso no formulário basico)

no extjs ele chama o HomeController faz o redirect para o UsuarioController porém não carrega a página (parece que form do extjs fica esperando uma resposta, porque não entra nem no sucess nem no failure)

Entendi. Será que isso resolve o seu problema?

http://67.228.178.42/forum/showthread.php?t=24686

Veja comentário do saki:

  1. Form.submits are handled differently. success and failure functions are called with 2 arguments: form, action. action.result contains already decoded json response from server and success is called only and only if server returns {“success”:true}. failure is called also if client validation fails and form is not submitted to the server at all in that case.
jingle

hmmm mas isso no vraptor não seria só por o

porque tentei fazer assim e não deu =S

Gustavokt

jingle:
hmmm mas isso no vraptor não seria só por o

porque tentei fazer assim e não deu =S

Usa o firebug? Ele gerou um response com o success com true?

boneazul

Bom se me lembro bem…

Toda submissao de formulário do extjs é feita atraves de ajax (a nao ser que voce mude pra fazer por post normal) ,ou seja ,seu redirecionamento fica no seu servidor não no seu cliente.

Voce tem que implementar um redirect na sua view com o metodo de sucesso do ajax que não me lembro o nome …da uma olhada na documentacao …vai ser algo do tipo

success : function(){

self.location=’…’;

}
Criado 22 de fevereiro de 2010
Ultima resposta 22 de fev. de 2010
Respostas 6
Participantes 3