[quote=broering][quote=“ricardolecheta”]voce pode fazer assim, mas deste jeito a validação é executada no lado servidor. Eu uso isto quando as validacões são mais complexas.
para validacões simples, como required, integer, date, email, ou com expressões regulares, vc pode usar o javascript se quiser… fica mais simples.[/quote]
Então pessoal… antes de mais nada gostaria de agradecer pela ajuda…
Estava faltando mesmo o “onsubmit=return validade…”
Resolvi fazer esta validação para não comprometer o trafego de informação barrando possiveis erros antes de chegar ao server… não deixando de fazer a validação no lado do servidor…
até aí beleza, ele adiciona todas as funcões para validação. mas quando executo o submit ele dá um erro de script:
Linha: 282
Caractere: 9
Erro: 'documentacaoForm_required' não esta definido
Codigo: 0
URL: http://localhost:8080/estudo/gestao/documentacao.vm
Obrigado!!![/quote]
Estou tentando fazer funcionar a validação do lado cliente dessa maneira, mas não estou conseguindo, pois está ocorrendo um erro de execução do JavaScript.
Configurei todo corretamente como indicado:
toolbox.xml:
<tool>
<key>validator</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.ValidatorTool</class>
</tool>
na minha template coloquei o form:
<FORM name="documentacaoForm"
action="$link.setAction('/gestao/documentacaoAction')"
method="post"
onsubmit="return validateDocumentacaoForm(this)">
que é o nome do form-bean no arquivo de configuração do struts:
<form-bean name="documentacaoForm"
e no final da template adicionei:
$validator.getJavascript("documentacaoForm")
Linha: 282
Caractere: 9
Erro: 'documentacaoForm_required' não esta definido
Codigo: 0
URL: http://localhost:8080/estudo/gestao/documentacao.vm
quando abro a linha 282 do arquivo cai exatamente neste código:
oRequired = eval('new ' + formName.value + '_required()');
da funcao que valida os campos requireds:
function validateRequired(form) {
var isValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
var formName = form.getAttributeNode("name");
oRequired = eval('new ' + formName.value + '_required()');
for (x in oRequired) {
var field = form[oRequired[x][0]];
if ((field.type == 'hidden' ||
field.type == 'text' ||
field.type == 'textarea' ||
field.type == 'file' ||
field.type == 'checkbox' ||
field.type == 'select-one' ||
field.type == 'password') &&
field.disabled == false) {
var value = '';
// get field's value
if (field.type == "select-one") {
var si = field.selectedIndex;
if (si >= 0) {
value = field.options[si].value;
}
} else if (field.type == 'checkbox') {
if (field.checked) {
value = field.value;
}
} else {
value = field.value;
}
if (trim(value).length == 0) {
if (i == 0) {
focusField = field;
}
fields[i++] = oRequired[x][1];
isValid = false;
}
} else if (field.type == "select-multiple") {
var numOptions = field.options.length;
lastSelected=-1;
for(loop=numOptions-1;loop>=0;loop--) {
if(field.options[loop].selected) {
lastSelected = loop;
value = field.options[loop].value;
break;
}
}
if(lastSelected < 0 || trim(value).length == 0) {
if(i == 0) {
focusField = field;
}
fields[i++] = oRequired[x][1];
isValid=false;
}
} else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
isChecked=-1;
for (loop=0;loop < field.length;loop++) {
if (field[loop].checked) {
isChecked=loop;
break; // only one needs to be checked
}
}
if (isChecked < 0) {
if (i == 0) {
focusField = field[0];
}
fields[i++] = oRequired[x][1];
isValid=false;
}
}
}
if (fields.length > 0) {
focusField.focus();
alert(fields.join('\n'));
}
return isValid;
}
esta função é gerada pelo velocity validator.
e parece que este “_required()” indica os campos que ele vai validar, será que faltou alguma coisa?