Problema com Validador no Struts

0 respostas
marcosharbs

Ola, estou estydando e tentei fazer um validador em struts, botei o plugin no struts-config.xml, configurei o validator-rules.xml e o validation.xml, defini na minha action o atributo validate=“true” e mesmo assim qdo submeto meu form ele não passa no validador, o campo continua aceitando qualquer valor.

Abaixo o codigo do plugin:

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

da action:

<action name="alunoForm" path="/inserirAluno"
			parameter="dscAcao" scope="session" type="Actions.AlunoActions"
			input="/Inserir_Aluno.jsp" validate="true">
			<forward name="sucesso" path="/Principal.jsp" />
			<forward name="falha" path="/Inserir_Falha.jsp" />
		</action>

da validator-rules.xml:

<form-validation>

	<global>
		<validator name="required"
            classname="org.apache.struts.validator.FieldChecks"
               method="validateRequired"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                  msg="errors.required">

         <javascript><![CDATA[
            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;
    }
    
    // Trim whitespace from left and right sides of s.
    function trim(s) {
        return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
    }
            ]]>
         </javascript>

      </validator>
      
      <validator name="mask"
            classname="org.apache.struts.validator.FieldChecks"
               method="validateMask"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.invalid">

         <javascript><![CDATA[
            function validateMask(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMasked = new mask();
                for (x in oMasked) {
                    var field = form[oMasked[x][0]];
                    
                    if ((field.type == 'text' || 
                         field.type == 'textarea') && 
                         (field.value.length > 0)) {
                        
                        if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMasked[x][1];
                            isValid = false;
                        }
                    }
                }
                
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }

            function matchPattern(value, mask) {
               return mask.exec(value);
            }]]>
         </javascript>

      </validator>
	</global>

</form-validation>

do validation.xml:

<form-validation>
	<formset>
		<form name="alunoForm">
			<field property="nome_novo" depends="required, mask">
				<arg0 key="logon.nome" resource="false"/>                 
            	<var>
					<var-name>mask</var-name>
					<var-value>^[0-9]*$</var-value>
				</var>
			</field>
		</form>
	</formset>
</form-validation>

meu form:

<form-beans>
		<form-bean name="alunoForm"
			type="org.apache.struts.validator.DynaValidatorActionForm"
			dynamic="true">
			<form-property name="selectedItems"
				type="java.lang.String[]" />
			<form-property name="dscAcao" type="java.lang.String" />
			<form-property name="nome" type="java.lang.String" />
			<form-property name="nome_novo" type="java.lang.String" />
			<form-property name="telefone" type="java.lang.String" />
			<form-property name="endereco" type="java.lang.String" />
			<form-property name="fase" type="java.lang.String" />
			<form-property name="periodo" type="java.lang.String" />
		</form-bean>
	</form-beans>

Se alguém souber se está faltando declarar mais alguma coisa ou puder me ajudar eu agradeço. Obrigado!

Criado 22 de setembro de 2008
Respostas 0
Participantes 1