Validaçao javacript com DynaValidatorForm

1 resposta
Marques

Pessoall,

Estou aprendendo o Strutus validator e peguei um exemplo que veio na javamagazine #7 que funciona ok usando uma classe que extende ValidatorForm. Porém se no struts-config.xml mudo para uma classe DynaValidatorForm qdo executo o meu form no browser aparece um monte de funcões javascript na tela.

Algueém pode me dar uma luz?

Note abaixo que a única coisa que fiz de diferente do exemplo foi mudar no action o name para referenciar a classe testeForm que é uma DynaValidatorForm em lugar de jm.form.CadastrarUsuarioForm

Meu form

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html>
  <head>
     <title>
       Cadastro de Usuários
     </title>

   <html:javascript formName="cadastrarUsuarioForm"/>

  </head>
<body>

<table>
<html:form action="/cadastrarusuario"
   onsubmit="return validateTesteForm(this);">
<tr>
<td colspan=2>
  <h2>Teste do Cadastro de usuários</h2>
</td>
</tr>

<!-- input nome -->
<tr><td><bean:message key="cadastrarUsuarioForm.nome"/></td>
<td><html:text property="nome"/></td></tr>

<!-- input email -->
<tr><td><bean:message key="cadastrarUsuarioForm.email"/></td>
<td><html:text property="email"/></td></tr>

<!-- input endereco -->
<tr><td><bean:message key="cadastrarUsuarioForm.endereco"/></td>
<td><html:text property="endereco"/></td></tr>

<!-- input telefone -->
<tr><td><bean:message key="cadastrarUsuarioForm.telefone"/></td>
<td><html:text property="telefone"/></td></tr>

<!-- input login -->
<tr><td><bean:message key="cadastrarUsuarioForm.login"/></td>
<td><html:text property="login"/></td></tr>

<!-- input senha -->
<tr><td><bean:message key="cadastrarUsuarioForm.senha"/></td>
<td><html:text property="senha"/></td></tr>

<tr><td colspan="2"><html:submit property="ok"/></td></tr>

</html:form>

</table>

</body>
</html>

Meu struts-config.xml. No action se eu altero o parametro name para “testeForm” o browser exibe codigos javascript abaixo

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
                               "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>
    <form-beans>
        <form-bean name="cadastrarUsuarioForm" type="jm.form.CadastrarUsuarioForm" />
		
		<form-bean name="testeForm" type="org.apache.struts.validator.DynaValidatorForm" dynamic="true">
		  <form-property name="nome" type="java.lang.String"/>
		  <form-property name="endereco" type="java.lang.String"/>	      
	      <form-property name="telefone" type="java.lang.String"/>
	      <form-property name="senha" type="java.lang.String"/>
		  <form-property name="email" type="java.lang.String"/>
	    </form-bean>
		
    </form-beans>	

    <global-forwards type="org.apache.struts.action.ActionForward" />

    <action-mappings type="org.apache.struts.action.ActionMapping">
        <action
            name="testeForm"
            type="jm.action.CadastrarUsuarioAction"
            path="/cadastrarusuario"
            input="/index.jsp"
            scope="request"
            validate="true">
            <forward name="telaCadastro" path="/sucesso.jsp" redirect="false" />
        </action>
		
    </action-mappings>

    <message-resources parameter="ApplicationResources" />

    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
                                                  /WEB-INF/validation.xml"/>
    </plug-in>
</struts-config>

O que é exibido no browser:

0)) { var fMin = parseFloat(oRange[x]2); var fMax = parseFloat(oRange[x]2); var fValue = parseFloat(form[oRange[x][0]].value); if (!(fValue >= fMin && fValue <= fMax)) { if (i == 0) { focusField = form[oRange[x][0]]; } fields[i++] = oRange[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateByte(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oByte = new ByteValidations(); for (x in oByte) { var field = form[oByte[x][0]]; if (field.type == ‘text’ || field.type == ‘textarea’ || field.type == ‘select-one’ || field.type == ‘radio’) { var value; // get field’s value if (field.type == “select-one”) { var si = field.selectedIndex; value = field.options[si].value; } else { value = field.value; } if (value.length > 0) { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) { if (i == 0) { focusField = field; } fields[i++] = oByte[x][1]; bValid = false; } } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateMaxLength(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oMaxLength = new maxlength(); for (x in oMaxLength) { if (form[oMaxLength[x][0]].type == ‘text’ || form[oMaxLength[x][0]].type == ‘textarea’) { var iMax = parseInt(oMaxLength[x]2); if (form[oMaxLength[x][0]].value.length > iMax) { if (i == 0) { focusField = form[oMaxLength[x][0]]; } fields[i++] = oMaxLength[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateRequired(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oRequired = new required(); for (x in oRequired) { var field = form[oRequired[x][0]]; if (field.type == ‘text’ || field.type == ‘textarea’ || field.type == ‘select-one’ || field.type == ‘radio’ || field.type == ‘password’) { var value; // get field’s value if (field.type == “select-one”) { var si = field.selectedIndex; value = field.options[si].value; } else { value = field.value; } if (value == ‘’) { if (i == 0) { focusField = field; } fields[i++] = oRequired[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateInteger(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oInteger = new IntegerValidations(); for (x in oInteger) { var field = form[oInteger[x][0]]; if (field.type == ‘text’ || field.type == ‘textarea’ || field.type == ‘select-one’ || field.type == ‘radio’) { var value; // get field’s value if (field.type == “select-one”) { var si = field.selectedIndex; value = field.options[si].value; } else { value = field.value; } if (value.length > 0) { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -[telefone removido] && iValue <= [telefone removido])) { if (i == 0) { focusField = field; } fields[i++] = oInteger[x][1]; bValid = false; } } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateRange(form) { return validateIntRange(form); } function validateCreditCard(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oCreditCard = new creditCard(); for (x in oCreditCard) { if ((form[oCreditCard[x][0]].type == ‘text’ || form[oCreditCard[x][0]].type == ‘textarea’) && (form[oCreditCard[x][0]].value.length > 0)) { if (!luhnCheck(form[oCreditCard[x][0]].value)) { if (i == 0) { focusField = form[oCreditCard[x][0]]; } fields[i++] = oCreditCard[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } /** * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl / function luhnCheck(cardNumber) { if (isLuhnNum(cardNumber)) { var no_digit = cardNumber.length; var oddoeven = no_digit &; 1; var sum = 0; for (var count = 0; count < no_digit; count++) { var digit = parseInt(cardNumber.charAt(count)); if (!((count & 1) ^ oddoeven)) { digit = 2; if (digit > 9) digit -= 9; }; sum += digit; }; if (sum == 0) return false; if (sum % 10 == 0) return true; }; return false; } function isLuhnNum(argvalue) { argvalue = argvalue.toString(); if (argvalue.length == 0) { return false; } for (var n = 0; n < argvalue.length; n++) { if ((argvalue.substring(n, n+1) < “0”) || (argvalue.substring(n,n+1) > “9”)) { return false; } } return true; } function validateDate(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oDate = new DateValidations(); for (x in oDate) { var value = form[oDate[x][0]].value; var datePattern = oDate[x]2; if ((form[oDate[x][0]].type == ‘text’ || form[oDate[x][0]].type == ‘textarea’) && (value.length > 0) && (datePattern.length > 0)) { var MONTH = “MM”; var DAY = “dd”; var YEAR = “yyyy”; var orderMonth = datePattern.indexOf(MONTH); var orderDay = datePattern.indexOf(DAY); var orderYear = datePattern.indexOf(YEAR); if ((orderDay < orderYear && orderDay > orderMonth)) { var iDelim1 = orderMonth + MONTH.length; var iDelim2 = orderDay + DAY.length; var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); if (iDelim1 == orderDay && iDelim2 == orderYear) { dateRegexp = new RegExp("^(\d{2})(\d{2})(\d{4})$"); } else if (iDelim1 == orderDay) { dateRegexp = new RegExp("^(\d{2})(\d{2})" + delim2 + "$"); } else if (iDelim2 == orderYear) { dateRegexp = new RegExp("^(\d{2})" + delim1 + "(\d{4})$"); } else { dateRegexp = new RegExp("^(\d{2})" + delim1 + "" + delim2 + "$"); } var matched = dateRegexp.exec(value); if(matched != null) { if (!isValidDate(matched[2], matched[1], matched[3])) { if (i == 0) { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else if ((orderMonth < orderYear && orderMonth > orderDay)) { var iDelim1 = orderDay + DAY.length; var iDelim2 = orderMonth + MONTH.length; var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); if (iDelim1 == orderMonth && iDelim2 == orderYear) { dateRegexp = new RegExp("^(\d{2})(\d{2})(\d{4})$"); } else if (iDelim1 == orderMonth) { dateRegexp = new RegExp("^(\d{2})(\d{2})" + delim2 + "$"); } else if (iDelim2 == orderYear) { dateRegexp = new RegExp("^(\d{2})" + delim1 + "(\d{4})$"); } else { dateRegexp = new RegExp("^(\d{2})" + delim1 + "" + delim2 + "$"); } var matched = dateRegexp.exec(value); if(matched != null) { if (!isValidDate(matched[1], matched[2], matched[3])) { if (i == 0) { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else if ((orderMonth > orderYear && orderMonth < orderDay)) { var iDelim1 = orderYear + YEAR.length; var iDelim2 = orderMonth + MONTH.length; var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); if (iDelim1 == orderMonth && iDelim2 == orderDay) { dateRegexp = new RegExp("^(\d{4})(\d{2})(\d{2})$"); } else if (iDelim1 == orderMonth) { dateRegexp = new RegExp("^(\d{4})(\d{2})" + delim2 + "$"); } else if (iDelim2 == orderDay) { dateRegexp = new RegExp("^(\d{4})" + delim1 + "(\d{2})$"); } else { dateRegexp = new RegExp("^(\d{4})" + delim1 + "" + delim2 + "$"); } var matched = dateRegexp.exec(value); if(matched != null) { if (!isValidDate(matched[3], matched[2], matched[1])) { if (i == 0) { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } else { if (i == 0) { focusField = form[oDate[x][0]]; } fields[i++] = oDate[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function isValidDate(day, month, year) { if (month < 1 || month > 12) { return false; } if (day < 1 || day > 31) { return false; } if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) { return false; } if (month == 2) { var leap = (year % 4 == 0 &;& (year % 100 != 0 || year % 400 == 0)); if (day>29 || (day == 29 && !leap)) { return false; } } return true; } function validateIntRange(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new intRange(); for (x in oRange) { if ((form[oRange[x][0]].type == ‘text’ || form[oRange[x][0]].type == ‘textarea’) && (form[oRange[x][0]].value.length > 0)) { var iMin = parseInt(oRange[x]2); var iMax = parseInt(oRange[x]2); var iValue = parseInt(form[oRange[x][0]].value); if (!(iValue >= iMin && iValue <= iMax)) { if (i == 0) { focusField = form[oRange[x][0]]; } fields[i++] = oRange[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateShort(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oShort = new ShortValidations(); for (x in oShort) { var field = form[oShort[x][0]]; if (field.type == ‘text’ || field.type == ‘textarea’ || field.type == ‘select-one’ || field.type == ‘radio’) { var value; // get field’s value if (field.type == “select-one”) { var si = field.selectedIndex; value = field.options[si].value; } else { value = field.value; } if (value.length > 0) { var iValue = parseInt(value); if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) { if (i == 0) { focusField = field; } fields[i++] = oShort[x][1]; bValid = false; } } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateFloat(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oFloat = new FloatValidations(); for (x in oFloat) { var field = form[oFloat[x][0]]; if (field.type == ‘text’ || field.type == ‘textarea’ || field.type == ‘select-one’ || field.type == ‘radio’) { var value; // get field’s value if (field.type == “select-one”) { var si = field.selectedIndex; value = field.options[si].value; } else { value = field.value; } if (value.length > 0) { var iValue = parseFloat(value); if (isNaN(iValue)) { if (i == 0) { focusField = field; } fields[i++] = oFloat[x][1]; bValid = false; } } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } function validateEmail(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oEmail = new email(); for (x in oEmail) { if ((form[oEmail[x][0]].type == ‘text’ || form[oEmail[x][0]].type == ‘textarea’) && (form[oEmail[x][0]].value.length > 0)) { if (!checkEmail(form[oEmail[x][0]].value)) { if (i == 0) { focusField = form[oEmail[x][0]]; } fields[i++] = oEmail[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(’\n’)); } return bValid; } / * Reference: Sandeep V. Tamhankar ([email removido]), * http://javascript.internet.com / function checkEmail(emailStr) { if (emailStr.length == 0) { return true; } var emailPat=/^(.+)@(.+)$/; var specialChars="\(\)<;>@,;:\\\"\.\[\]"; var validChars="[^\s" + specialChars + “]”; var quotedUser="("[^"]")"; var ipDomainPat=/^(\d{1,3})...$/; var atom=validChars + ‘+’; var word="(" + atom + “|” + quotedUser + “)”; var userPat=new RegExp("^" + word + “(\.” + word + “)$"); var domainPat=new RegExp("^" + atom + “(\.” + atom + ")$”); var matchArray=emailStr.match(emailPat); if (matchArray == null) { return false; } var user=matchArray[1]; var domain=matchArray[2]; if (user.match(userPat) == null) { return false; } var IPArray = domain.match(ipDomainPat); if (IPArray != null) { for (var i = 1; i <= 4; i++) { if (IPArray[i] > 255) {

1 Resposta

vivi_grieco

Eu acho que vc tem q colocar o seu form no validation.xml com os campos do form q serão validados.
Por exemplo, no código abaixo tem um form chamado loginForm onde os campos “login” e “senha” são obrigatórios:

&lt;!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd"&gt;
&lt;form-validation&gt;
	&lt;global /&gt;
	&lt;formset&gt;
		&lt;form name="loginForm"&gt;
			&lt;field property="login" depends="required"&gt;
				&lt;arg0 key="loginForm.login" /&gt;
			&lt;/field&gt;
			&lt;field property="senha" depends="required"&gt;
				&lt;arg0 key="loginForm.senha" /&gt;
			&lt;/field&gt;
		&lt;/form&gt;
	&lt;/formset&gt;
&lt;/form-validation&gt;

No site do struts tem muito bem explicado os vários tipos de validação (campo requerido, data, email, etc…):

http://struts.apache.org/userGuide/dev_validator.html

Espero ter ajudado

Criado 30 de março de 2005
Ultima resposta 30 de mar. de 2005
Respostas 1
Participantes 2