ActionForm (struts) VS. Javascript

Pessoal, estas duas funcionalidades basicamente se encarregam de validação de formulário… Existem situações específicas para se optar por um ou outro?

de preferencia use as duas.
o usuario pode ter desabilitado o js do browser, dae ja era sua validação.
por isso o melhor é validar nos dois lados.

de uma olhada no plugin validator do struts, ele gera as validações js para vc.

[]'s

Então optar por usar ActionForm já basta? Aposento javascript, já que uso struts? Acho que existem situações específicas…

a validação do struts(action) é feita no servidor, por isso usar js é uma boa opção, evita da pagina ser submetida com erros. se por acaso passar pelo js e chegar no servidor, vc valida de novo.
normalmente com js vc valida ccmpos não nulos, valores, essas coisas, não acho que valha a pena validar no servidor isso. no servidor é mais p/ garantir mesmo.
e com o validator, fica bem facil de gerar os js para formularios.

[]'s

Minha opinião é: faça no cliente tudo o que for possível fazer, para não sobrecarregar o servidor, e evitar que dados inconsistentes naveguem através da rede desnecessariamente.

Além de que, dependendo da velocidade da sua conexão, até a requisição ir para o servidor e voltar demora…
Imagina vc esperar 1 minuto para te retornar um erro falando “Campo do usuário em Branco, por favor preecha o campo”…

Como o pessoal disse, a validacao no cliente e para evitar um submit desnecessario, mas vc DEVE fazer no servidor as mesmas validacoes que faz no cliente, pq o js pode estar desabilitado ou ate mesmo haver ma fe.

Além de que, dependendo da velocidade da sua conexão, até a requisição ir para o servidor e voltar demora…
Imagina vc esperar 1 minuto para te retornar um erro falando “Campo do usuário em Branco, por favor preecha o campo”…[/quote]

é isso ae…
por isso sempre faça as validações “simples” no cliente, e deixe o trabalho pesado somente para quando for realmente necessario.

[]'s

Apenas se o JavaScript estiver desabilitado, e acredito que há meios de se saber isso. Ou então, o JavaScript pode ser um requisito da aplicação.

Javascript como requisito pode ser considerado para funcionalidades gerais, mas nunca para validacao. Validar no cliente eh interessante pois vai evitar que voce faca a pagina com erro aparecer o tempo todo.

Mas, como ja disseram, deixar de validar no servidor nao eh uma opcao.

Rafael

[quote=Rafael Steil]Javascript como requisito pode ser considerado para funcionalidades gerais, mas nunca para validacao. Validar no cliente eh interessante pois vai evitar que voce faca a pagina com erro aparecer o tempo todo.

Mas, como ja disseram, deixar de validar no servidor nao eh uma opcao.

Rafael[/quote]

Você quis dizer que se eu precisar de JavaScript só para validação eu deveria descartá-lo? Discordo. Mas pode-se deixar isso opcional, assim o servidor só vai fazer a validação dos dados referente ao cliente se o JavaScript não estiver presente no mesmo (desabilitado ou não suportado).

É o q o Rafael quis dizer Renato! De qualquer forma é fundamental vc ter a validação no Server-Side…
Agora, a validação Client-Side eh opcional…Seja Javascript, VBScript, ou qualquer outro lixo pseudo-linguistico q possa existir… :smiley:

Desculpa cara, desculpa mesmo, mas eu discordo. Tudo o que for possível ficar no cliente eu prefiro deixar no cliente. Validações que só o servidor pode fazer, aí ele faz. Mas cada um tem a liberdade de fazer como quiser :smiley: t++;

Como vc mesmo citou, um usuário pode apenas ter o javascript desabilitado, ou, se ele estiver mal intencionado, ele mesmo pode desabilitar para burlar alguma regra executada em client side…

E se vc não tiver essa regra replicada em Server-Side?
Vai pro espaço a integridade dos dados!

Acho que não Diogenes! Peça ao JavaScript para enviar um campo de controle ao servidor, indicando que as validações cliente foram feitas. Caso o JavaScript esteja desabilitado, o servidor assumirá as verificações, pois não receberá o “sinal de vida” do JavaScript.

seria o ideal, mas numa app real onde segurança é essencial…

acho que deve ser feita nos dois lados, não da p/ confiar em js da vida, ate pq cada browser implementa de maneira diferente. eu não confio.
então so validar no server, se passar pelo js acredito que não seja a melhor solução.
a lei de murphy ta sempre nos dizendo p/ nos precavermos.

[]'s

Só pra ilustrar, pra quem tiver a curiosidade de testar: tentem acessar uma página que use js através do navegador links (geralmente vem nas distribuições linux). Nem sempre é má fé, pode ser a única coisa que o usuário tem disponível no momento. Tentem por exemplo, acessar email no yahoo, já rejeita direto (não necessariamente sendo problema apenas de validação)

A questão Renato é que dessa maneira o cliente pode ser burlado por alguém q haja de má fé…Eu posso criar um clone do teu formulário, por exemplo, para enviar tal flag indicando q as validações foram feitas com sucesso, juntamente com os dados ilegais, que podem, por exemplo, ser o ganho de acesso a uma area restrita do servidor ou da aplicação…
Isso faria com q o servidor não validasse os dados e aih vai tudo pro espaço de novo…

A questão eh que sua aplicação não deve depender do cliente para validar as informações recebidas…
Dificilmente vc verá um cliente verificando se a nota de R$100 q estah sendo utilizada na compra eh falsa ou não…Provavelmente, vc verá a caixa da loja em questão fazendo essa verificação, e não o cliente.
Imagine q acontece o mesmo com sua aplicação.

Pra resumir a história toda, eu acredito que a maneira definitiva seja a seguinte:

  • Use javascript para validar dados simples do lado do cliente, para que transferências desnecessárias de dados sejam feitas, como já falaram nos posts anteriores;
  • faça as MESMAS validações no lado do servidor. Então, teoricamente vc tem duas “camadas” de proteção.

Usando o javascript vc cobre um número considerável de usuários e evita consequentemente uma quantidade desnecessária de tráfego. Mas o javascript não deve ser usado para nada além do que simples validações E não deve ser encarado como única solução de validação, de forma alguma.
E como nesse caso vc tem também uma outra camada de validação, vc se protege de todos os problemas, pro caso do javascript não funcionar.

:thumbup:

É por aí Márcio :wink: