Invocar JavaScript utilizando JSF

Olá, galera.

Tenho que criptografar uma senha, no navegador, antes de enviá-la para o servidor e já sei como fazer isso utilizando JavaScript.

O problema é que estou usando PrimeFaces e minha idéia é a seguinte:

Ao clicar no botão LOGAR (<p:CommandButton>), no meu formulário de login, eu quero que seja invocado o JavaScript, a senha seja criptografada e só depois quero que os dados sejam enviados para o ManagedBean.

Isso é possível? Se sim alguém pode me dar um exemplo?

Obrigado!

vc pode usar o método onclick ou onstart:

<p:commandButton onclick=“funcaoJS();” />

[quote=felipe_gdr]vc pode usar o método onclick ou onstart:

<p:commandButton onclick=“funcaoJS();” />[/quote]

É bem simples! Valeu cara!

Mas e pra eu invocar o ManagedBean através do JavaScript?
EX: #{LoginMB.logar}

Você tem idéia de como fazer?

Opa, ainda bem que você está usando o Primefaces, pois fica fácil usando o componente <p:remoteCommand>.

você faz assim:

[code]<p:commandButton onclick=“funcaoJS();” />
<p:remoteCommand name=“chamaAction” actionListener=“actionNoJava” update=“etc…” />

[/code]

No Java:

public void actionNoJava() { fazCoisasNoJava }

mais ou menos assim…

Tenha em mente que não é nada seguro criptografar usando javascript (do lado do cliente). Aconselho a fazer isso no servidor mesmo.

Fiquei curioso agora, pois realmente, criptografar no javascript significa que qualquer um poderá ver seu método. Porém, se fizer no servidor, no caminho entre browser e servidor a senha fica desprotegida, né?

No javascript a pessoa pode ver seu método de criptografia, então decriptar deve ser muito fácil.

Mas até que o dado chegue ao servidor, ele fica descriptografado. Então qual seria a solução para isso??

[quote=felipe_gdr]Opa, ainda bem que você está usando o Primefaces, pois fica fácil usando o componente <p:remoteCommand>.

você faz assim:

[code]<p:commandButton onclick=“funcaoJS();” />
<p:remoteCommand name=“chamaAction” actionListener=“actionNoJava” update=“etc…” />

[/code]

No Java:

public void actionNoJava() { fazCoisasNoJava }

mais ou menos assim…[/quote]

É bem mais simples do que eu imaginava.
Minha última dúvida é como pegar o dado que está em um <p:oinputText> para manipulá-lo com o javaScript e depos passar esses dados para o Java?

dá pra pegar o valor do input usando jquery:

[code]var senhaDesc = $("#id_do_input").val();

var senhaCript = criptografa(senhaDesc);[/code]

e depois setar o valor no proprio input, por exemplo:

[code]$("#id_do_input").val(senhaCript);

chamaAction();[/code]

Acho que funcionaria…

[quote=felipe_gdr]dá pra pegar o valor do input usando jquery:

[code]var senhaDesc = $("#id_do_input").val();

var senhaCript = criptografa(senhaDesc);[/code]

e depois setar o valor no proprio input, por exemplo:

[code]$("#id_do_input").val(senhaCript);

chamaAction();[/code]

Acho que funcionaria…[/quote]

Obrigado! Vou testar e qualquer coisa eu posto aqui :wink:
Valeu