Validação de formulário

Como e onde é recomendável que se faça a validação de dados(sem o uso de frameworks).

Eu faço assim:
Antes de enviar os dados eu faço a validação no cliente(JavaScript).
Depois, eu pego os parâmetros do formulário dentro do servlet.
Em seguida, eu chamo um método da minha classe, que eh o meu bean e tem as minhas regras de negócio, para validar os campos.
Caso os dados estejam corretos eu instancio a classe.
Caso contrário eu retorno para o jsp exibindo um erro.

Isso está correto?

Obrigado

Marcos

Eu acho que vc está fazendo correto, pois imagine se o cliente deixe desabilitado no browser o javascript, por isso concordo vc validar tanto no cliente quanto no servidor !!!

Tem uma API de renderização de HTML/CSS e Javascript para Java chamada Formj.
Na API entre outras funções, tem a validação pre post com expressões regulares com os parsers;

    DATE
    NUMERIC
    NOTNULL
    EMAIL
    MONEY1
    MONEY2
    CEP1
    CEP2
    TIME
    ALPHA
    ALPHA_SPACE
    ALPHANUMERIC
    ALPHANUMERIC_SPACE
    FILENAME
    FILENAME_LATIN1
    ALPHA_LATIN1
    ALPHANUMERIC_LATIN1
    REALNUMBER1
    REALNUMBER2
    URL
    NAME_LATIN1
    DATE_OR_NULL
    NUMERIC_OR_NULL
    EMAIL_OR_NULL
    MONEY1_OR_NULL
    MONEY2_OR_NULL
    CEP1_OR_NULL
    CEP2_OR_NULL
    TIME_OR_NULL
    ALPHA_OR_NULL
    ALPHA_SPACE_OR_NULL
    ALPHANUMERIC_OR_NULL
    ALPHANUMERIC_SPACE_OR_NULL
    FILENAME_OR_NULL
    FILENAME_LATIN1_OR_NULL
    ALPHA_LATIN1_OR_NULL
    ALPHANUMERIC_LATIN1_OR_NULL
    REALNUMBER1_OR_NULL
    REALNUMBER2_OR_NULL
    URL_OR_NULL
    NAME_LATIN1_OR_NULL

Algumas funcionalidades de programação OO em Html. Assim;

//3 input=text
ParserText pt4 = new ParserText("teste4",ParserText.DATE);//Esse vai com uma setinha(obrigatório)
ParserText pt5 = new ParserText("teste5",ParserText.ALPHA);//Esse vai com uma setinha(obrigatório)
ParserText pt6 = new ParserText("teste6",ParserText.EMAIL_OR_NULL);//Esse esse não tem seta, pois não é obrigatório

Submit s = new Submit("hteste","Enviar",ParserText.makeTest(pt4,pt5,pt6));//Olha a mágica!!
s.setCenter(true);

FlowLayout fl = new FlowLayout(pt4,pt5,pt6);//Apenas para organização
fl.setVertical(true);
WinForm win2 = new WinForm("Teste de Parse","300","200");
win2.form.setAction("pagina.jsp");
win2.addCenter(fl);
win2.addSouth(s);
win2.setMovable(true);//mover a janela
win2.setClosable(true);//"fechavel"

out.print(win2.getObject());

Em http://formj.sourceforge.net -> exemplos -> Validação Pre Post.
Se for utilizar pegue a versão 1.3.9

Eu acredito que é importante mesmo validar tanto do lado do cliente quanto no servidor.

Interessante essa api.

Mas e quanto a validação no servidor? Está correto o modo como eu faço?

[quote=jdeveloper]Eu acredito que é importante mesmo validar tanto do lado do cliente quanto no servidor.

Interessante essa api.

Mas e quanto a validação no servidor? Está correto o modo como eu faço?[/quote]

Concordo com vc tem que ser dos dois lados.
No caso do formj usa-se ajax de uma maneira bem fácil, com essa facilidade pode-se inferir que para usar ajax só via javascript, se o cara desabilitar o javascript não funciona nada, nem chega no servidor.
Validação nunca é d+, consistência é que é o cara! :smiley:

Eu gostei da facilidade em se implementar a validação.

Mas eu não gosto de ficar tão dependente da framework. Eu preferiria definir layout, organização e formatação utilizando css e html.

Pelo que eu entendi em todas as páginas eu teria que definir tudo isso. Enquanto se eu usar css eu defino isso em um só arquivo.

Só uma correção. O Formj é uma API(open source) e não um framework.